一个例证,测试你对内存对齐,认识是否正确
一个例子,测试你对内存对齐,认识是否正确。先不调试,根据你自己以往的认识,把下面sizeof(SByte2),计算出来,
一个例子,测试你对内存对齐,认识是否正确。
先不调试,根据你自己以往的认识,把下面sizeof(SByte2),计算出来,然后,贴上来,看看有多少个人能做对的?
C/C++ codestruct SS { char a; double b; int c;};struct SByte2 { char d; SS e; int f[3]; char g[5]; };
[解决办法] 五 十 六 !
[解决办法]这个问题,LZ你没说以多少字节对齐
万一人家有个
#pragma pack(1)
?
或者人家是64位机?
[解决办法]GCC 默认 #pragma pack(4) 16,40
VS 默认 #pragma pack(8) 24,56
看了小米面试贴中大大给的教程http://blog.csdn.net/hairetz/article/details/4084088
获益良多!
[解决办法]假定 sizeof(double) == 8 并且 pack指定为8[或者比8大]
结果是 56
[解决办法]gcc和vs是不一样的
32位系统,gcc默认4,vs默认8
gcc是16,40,vs是24,56