#include<stdio.h>
#pragma pack(2)
union u
{
char buf[9];
int i;
};
int main()
{
printf("sizeof(u) :%u\n", sizeof(union u));
return 0;
}
在Ubuntu 16.04.2 LTS编译运行的结果是
sizeof(u) :10
代码中#pragma pack(2)将对齐设置为2,所以int得对齐方式也变成了2,整个u的对齐也是2,所以此时sizeof(u)=10。