字节序

对齐准则

1.基本数据类型自身的对齐值:char(1),

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

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

4.结构体、类、基本数据类型的有效对齐值:自身对齐值和指定对齐值得较小者。

有效对齐N表示“对齐在N上”,即该数据的“存放起始地址%N=0”。而数据结构中的数据变量都是按定义的先后顺序存放。

 结构体字节对齐原则

1.结构体变量的首地址能够被其最宽的基本类型成员的大小所整除。

2.结构体每个成员地址相对结构体首地址的偏移量都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节。

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

说明:

对于第一条:编译器在给结构体开辟空间是,首先找到结构体中最宽的基本数据类型,然后再内存中寻找能被这个宽度数字整除的内存地址位置,作为结构体的首地址。

对于第二条:为结构体成员开辟空间之前,编译器首先检查预开辟空间的首地址相对与结构体的首地址的偏移是否是本成员宽度的整数倍,若是,则存放本成员,反之,则在本成员和上一个成员间添加一个填充字节,再做检查直到存放成功。

转载于:https://my.oschina.net/u/2357574/blog/600038

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值