其实标题里面的三个关键字说的都是同一个东西。也就是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。