与极品家丁同时期的书:内存对齐问题

来源:百度文库 编辑:中财网 时间:2024/05/02 07:56:23
  typedef   struct     {     int   a[10];     char   ch[10];     int   f[10];     bool   b[10];     }MType;             int   _tmain(int   argc,   _TCHAR*   argv[])     {         int   i;             MType   mt;         printf("%d",sizeof(MType));     getch();     return   0;     }     这个结构中,本来按我们计算sizeof(MType)是100,然而结果是104。在vc和     linux下的dev   c++都是。     原因是内存对齐问题。一般编译器认为内存以4的倍数对齐。仔细分析内存可以得出     结论,不够4,要向后移动,凑成4的倍数。这个机构的一个对象就涉及了向后移动2     字节,补全2字节。故为104。         可以在文件最前面加#pragma   pack(1)   这是将编译器该成为1的倍数对齐,这样求出的     长度就为100了。