struct内存对齐

       关于C++中的struct内存对齐,应该也是初学者比较疑惑的一个知识点,但是搞清楚之后会发现非常简单,这里解释一下struct内存到底怎么对齐。

       主要记住以下两点:

1.各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数

2.整个struct的内存大小需为struct中最大字节数变量的整数倍


下面举个例子:

struct A{

int a;

char b;

short c;

int d;

}

int型的a占4字节,char型的b占1字节,根据要点1,b的偏移量就是a的大小4字节,是b大小1字节的整数倍,因此已经对齐,再看short c的大小是2字节,相对于结构体起始内存偏移量是(4+1)=5字节,不是2的整数倍,因此这里需要插入1字节,成6字节,这样才是2字节的整数倍,最后看d,偏移量为8,已经是整数倍,现在总内存是12字节,是struct中最大字节变量的整数倍,不需要对齐,因此总的大小为12字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值