有人可以向我解释一下数据是如何被利用的,因为我在搞乱以下代码......:
#include <stdio.h>
#include <stdlib.h>
typedef struct MyStruct {
public:
void print() {
printf("MyStruct.print():\n\ta: %i\n\tb: %i\n\n", a, b);
}
void store() {
a = 2;
b = 3;
}
private:
int a, b;
};
typedef struct MyStruct2 {
public:
void print() {
printf("MyStruct2.print():\na: %i\nb: %i\n\n", a, b);
}
void store() {
a = 1024;
b = 3077;
}
private:
int a, b;
};
int main() {
void *ptr = malloc(sizeof(MyStruct)); // sizeof(MyStruct) == sizeof(MyStruct2)
MyStruct* pstruct = (MyStruct*)ptr;
pstruct->store();
pstruct->print();
MyStruct2* pstruct2 = (MyStruct2*)ptr;
pstruct2->store();
pstruct->print();
return 0;
}
我得到了以下结果:
MyStruct.print():
a: 2
b: 3
MyStruct.print():
a: 1024
b: 3077
如您所见,我没有为 pstruct2 分配更多内存,但我能够访问它。任何人都可以向我解释,或者至少给我一个参考/教程来解释它。