今天回顾一下,C Struct的对齐规则,至于为什么要对齐,这里就不详细说了。我们只需要了解其中的规则就可以。了解一个struct在内存中的长度。定义结构体如下:
struct UserData { char sex; double money; int age; };
在上面的结构体中。第一个字段sex,实际占用内存是一个字节,由于后面的money字段是8个字节,到第二个字段是,sex可移动的是1,不是sizeof(double)的倍数,因此第一个字段,1会加上7,自动扩充到sizeof(8),然后第二个字段是8个字段,到第三个字段是age,是sizeof(int)=4,1+7+8=16,是4的倍数,所以最后占用内存是1+7+8+4=20,但是由于总长度不是字段中最长的字段sizeof(double)的倍数,因此再补4个字节,因此最后总长是:1+7+8+4+4=24
写个测试程序在VC中测试下:sizeof(UserData).查看。确实是24