字节对齐
来源:互联网 发布:变号王软件下载 编辑:程序博客网 时间:2024/06/18 15:19
字节对齐 [转]
字节对齐
- sizeof(TestStruct1)为多少呢?也许你会这样求:
- sizeof(TestStruct1) = sizeof(double) + sizeof(char) + sizeof(int) = 13
但是当在VC中测试上面结构的大小时,你会发现sizeof(TestStruct1)为16。其实,这是VC对变量存储的一个特殊处理。 为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。(字节对齐) 在默认情况下,VC规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。 常用类型的对齐方式(Win32)
类型 对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量) char偏移量必须为sizeof(char)即1的倍数int偏移量必须为sizeof(int)即4的倍数double偏移量必须为sizeof(double)即8的倍数short偏移量必须为sizeof(short)即2的倍数float偏移量必须为sizeof(float)即4的倍数
各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节VC会自动填充。 同时VC为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数, 所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。
禁用字节对齐
VC中提供了#pragma pack(n)来设定变量以n字节对齐方式。 n字节对齐就是说变量存放的起始地址的偏移量有两种情况: #. 如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式, #. 如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。
结构总大小约束条件: 如果n大于所有成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数; 否则必须为n的倍数。
转载地址
[1]http://www.cnblogs.com/ComputerG/archive/2012/02/02/2335611.html
字节对齐 [转]
字节对齐
- sizeof(TestStruct1)为多少呢?也许你会这样求:
- sizeof(TestStruct1) = sizeof(double) + sizeof(char) + sizeof(int) = 13
但是当在VC中测试上面结构的大小时,你会发现sizeof(TestStruct1)为16。其实,这是VC对变量存储的一个特殊处理。 为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。(字节对齐) 在默认情况下,VC规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。 常用类型的对齐方式(Win32)
类型 对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量) char偏移量必须为sizeof(char)即1的倍数int偏移量必须为sizeof(int)即4的倍数double偏移量必须为sizeof(double)即8的倍数short偏移量必须为sizeof(short)即2的倍数float偏移量必须为sizeof(float)即4的倍数
各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节VC会自动填充。 同时VC为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数, 所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。
禁用字节对齐
VC中提供了#pragma pack(n)来设定变量以n字节对齐方式。 n字节对齐就是说变量存放的起始地址的偏移量有两种情况: #. 如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式, #. 如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。
结构总大小约束条件: 如果n大于所有成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数; 否则必须为n的倍数。
转载地址
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- JAVA 多线程相关
- 在eclipse里导入项目方法
- C++内存布局生成步骤
- 如何对类中的protected方法进行单元测试
- Information about ora.OC4J in Rac Environment
- 字节对齐
- JDK环境变量配置及其作用分析
- 点聚weboffice 6.0 ASP.NET 在线Word,excel,wps编辑控件
- 并行计算机的现状与发展趋势
- 并行计算
- oracle forall 和 BULK COLLECT
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- jquery ui tab 详细参考
- 分布式计算