关于struct内union的sizeof的问题
下面直接贴代码了 请见谅
- C/C++ code
#include <iostream>using namespace std;struct tmp{ int nData; double dData; char cData1; union { int nDatainUnion; double dDatainUnion; }; char cData2;};union uTemp{ int nDatainUnion; double dDatainUnion;};int main(){ tmp test; cout << (int)&(test.cData1) - (int)&(test.nData) << endl; cout << (int)&(test.cData2) - (int)&(test.cData1) << endl; cout << sizeof(tmp) << endl; cout << sizeof(uTemp) << endl; cout << sizeof(tmp) - sizeof(int) - sizeof(double) - sizeof(char)*2 << endl; return 0;}结果我有点不明白 为什么同样是同一种组成的union
sizeof(tmp) - sizeof(int) - sizeof(double) - sizeof(char)*2 与 sizeof(uTemp) 为什么不等?
[解决办法]
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)