### 数据对齐和数据补齐 一个存储区的地址应该是它自身大小的整数倍,然而double例外,double类型存储区的地址只需要是4的整数倍就可以了,这个对则叫做数据对齐。 结构体里面的子存储区,通常也需要遵守这个规则的。 #include <stdio.h> typedef struct { char buf[2]; int num; } tmp; int main(){ printf("sizeof(tmp)是: %ld\n", sizeof(tmp)); return 0; } 结构体存储区的大小必须是它所包含的最大基本类型子存储区大小的整数倍,如果这个基本类型子存储区是double类型则结构体存储区大小只需要是4的整数倍,这个规则叫数据补齐。 数据补齐可能导致结构体最后多出一些浪费的字节。