字节对齐/内存对齐/对齐粒度

本文详细介绍了C++中类和结构体的内存对齐策略,包括自身对齐模数、指定对齐模数和有效对齐模数。通过实例解释了成员对齐模数和整体对齐模数的计算方法,帮助理解内存分配策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实标题里面的三个关键字说的都是同一个东西。也就是C++中类和结构体在内存中的分配策略,专业术语可以称之为“对齐模数(Alignment Modules)”。

对齐模数分为三类:

1.自身对齐模数,也就是类或结构体中成员的大小,1,2,4,8之中的一个,对应BYTE WORD DWORD QWORD。

2.指定对齐模数,也就是IDE指定的默认对齐模, 在MS系列IDE中,默认为8。不过这个东西基本就是个摆设。

3.有效对齐模数,也就是自身对齐模数和指定对齐模数中较小的那一个。


如何计算:

计算需要分为两部分,都是用有效对齐模数来计算的,

1.类或结构体中成员的对齐模数

2.类或结构体整体的对齐模数


先来说下成员的对齐模数,

有效对齐模数,就是每个成员的大小。但是这些成员并不是连续排列的。每一个成员的起始地址,必须要能被他的有效对齐模数整除。

举个简单的例子:struct{BYTE a;INT b;} 这玩意的sizeof是8。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值