内存对齐问题(关键字,内存对齐) 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了。