首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个例证,测试你对内存对齐,认识是否正确

2012-09-07 
一个例子,测试你对内存对齐,认识是否正确。先不调试,根据你自己以往的认识,把下面sizeof(SByte2),计算出来,

一个例子,测试你对内存对齐,认识是否正确。
先不调试,根据你自己以往的认识,把下面sizeof(SByte2),计算出来,然后,贴上来,看看有多少个人能做对的?



C/C++ code
struct 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

热点排行