给定一个结构对象或指向一个结构对象的指针,我如何读取对象之前的 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/