次のコードをいじっていたので、誰かがデータがどのように利用されているか説明してもらえますか...:
#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 にこれ以上メモリを割り当てていませんが、アクセスできました。誰かが私に説明できますか、少なくともそれを説明するこれに近いものへの参照/チュートリアルを教えてください。