C++结构体对齐和位域

C++结构体对齐:

(1)各元素对齐:各元素的偏移量应为该元素大小的整数倍。特殊:结构体元素的偏移量应为其包含的最大基本类型元素的大小的整数倍

(2)整体对齐:结构体大小应为结构体内最大元素的整数倍,当包含结构体元素时,找最大元素时需要把所有结构体拆散来看,

找出最大的基本类型

可以用#pragma pack(n)改变对齐大小


Union对齐:需要按Union中最大的基本类型来对齐。


位域:

struct bits {
int b1 : 4;
int : 2; // 0 表示跳过这个byte
int b2 : 1;
};

struct大小为最大基本类型的整数倍。一个位域必须存储在同一个字节中,不能跨两个字节。

如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值