关于字节最齐的默认值问题
请问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)
------解决方案--------------------