日期:2014-05-16  浏览次数:20763 次

关于字节最齐的默认值问题
请问VS 和 gcc中的字节对齐的默认值是根据什么设的?

个人怀疑与CUP的指令位数有关,实验结果如下:

64位处理器,32位win7系统
测试VS2010环境,默认值是8字节对齐。

64位处理器,64位CentOS系统 //虚拟机上装的
测试gcc-4.4.1,默认值是8字节对齐

又没人确切知道的,或者能不能提供32位机器上的实验数据


------解决方案--------------------
是与指令位数有关

贴一下之前收录的3个原则


字节对齐的三个原则

1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除
2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding)
3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(trailing padding)
------解决方案--------------------
探讨

测试一下就知道了呗.

struct a{
int b;
};

sizeof(struct a)看看是4还是8.