最近看书总是遇到定义一个结构体,然后问你sizeof(此结构体)的值是多少?
本人看了看<<深入理解计算机系统>>一书,由做了些实验。总结一下:
1:
Java代码
- struct Foo{
- int a;
- union U{
- }u;
- };
- int main()
- {
- printf("%d\n",sizeof(Foo));
- system("pause");
- return 0;
- }
输出:8
因为空的Union占一个字节。默认4字节对齐。
2:
Java代码
- #pragma pack(2)
- struct Foo{
- int a;
- union U{
- }u;
- };
- int main()
- {
- printf("%d\n",sizeof(Foo));
- system("pause");
- return 0;
- }
这样要是指定是2字节对齐,那么输出结果就是2了。
3:
Java代码
- #pragma pack(2)
- struct Foo{