c - 在C中,如何读取地址前的内存块

标签 c pointers memory

给定一个结构对象或指向一个结构对象的指针,我如何读取对象之前的 x 字节内存?例如,如果我知道对象从地址 10 开始,我如何从地址 10-x 读取 x 个字节到地址 9?谢谢。

最佳答案

从任何地址读取字节很容易:只需将指针转换为 char*,减去所需的字节数,然后开始读取,如下所示:

struct MyStruct {
    int x;
    int y;
} test[100];
...
void *ptr = &test[50];
...
char *start = (char*)prt;
start -= 10;
// You can read from the start pointer now

您需要确保您尝试读取的内存对于您的应用程序来说是合法的。内存需要是您静态或动态分配的更大结构的一部分。否则就是未定义的行为,可能会导致崩溃。

关于c - 在C中,如何读取地址前的内存块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401208/

相关文章:

c - C 中的 strtok 和传递参数

对二叉树中节点的双指针插入的用法感到困惑

java - java引用变量存储在哪里?

c++ - C语言中如何使用内存地址?它们是十六进制还是无符号整数?

Python:对子字符串列表进行排序,而不创建每个子字符串的单独副本

C 编程 - 访问 USB 数据/驱动程序细节

c - Mac 多点触控代码

c - 尝试修改字符串时出现段错误

c - Linux 上 C 语言的原子操作

c - 是否有一种符合 ISO C 的方法来创建一个返回指向嵌套在其中的函数的指针的函数?