1

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

4

2 回答 2

1

就像Nitzan Shaked在评论中所说的那样,将指针转换为,(char *)以便您可以在字节级别进行指针算术。然后做指针算术(减去你需要减去的字节数),然后将它转换回你需要读取它的事物类型的指针。

于 2013-03-14T04:31:05.947 回答
1

从任何地址读取字节都很容易:只需将指针转换为 a 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

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

于 2013-03-14T04:32:30.500 回答