首页 > 其他 > 详细

结构体字节对齐

时间:2019-03-17 13:39:56      阅读:145      评论:0      收藏:0      [点我收藏+]

四个重要的基本概念:

     1) 数据类型自身的对齐值:char型数据自身对齐值为1字节,short型数据为2字节,int/float型为4字节,double型为8字节。

     2) 结构体或类的自身对齐值:其成员中自身对齐值最大的那个值。

     3) 指定对齐值:#pragma pack (value)时的指定对齐值value。

     4) 数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中较小者,即有效对齐值=min{自身对齐值,当前指定的pack值}。

 

 结构体字节对齐的细节和具体编译器实现相关,但一般而言满足三个准则:

     1) 第一个成员在结构体变量中的偏移量为0的地址处,也就是第一个成员必须从头开始。

     2) 结构体每个成员要对齐到对齐数的整数倍,对齐数为编译器默认对齐数与该成员大小中的较小值。默认对齐数可以通过#pragma pack()修改。但只能改成1,2,4,8,16

     3) 结构体的总大小为结构体最宽成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节{trailing padding}。

 

结构体字节对齐

原文:https://www.cnblogs.com/nanqiang/p/10546659.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!