一分钟理解内存对齐
关于内存对齐的的博客大家应该看了很多了,可能还没看懂。接下来我将用最浅显的语言描述内存对齐的用法。
(1)基本概念:
怎么对齐?:通过给该成员之前的成员多分配内存。
当前对齐值:是给定值#pragma pack(n)和当前需要对齐成员数据类型长度中较小的那个。
有效对齐值:是给定值#pragma pack(n)和结构体中最长数据类型长度中较小的那个。
(2)按先后顺序,找到需要对齐的成员C,使 此成员C 之前 的内存占用为当前对齐值的整数倍。
如果C成员类型长度为4,在此之前内存占用了7,则将之前的内存占用对齐为8.
如果C成员类型长度为8,在此之前内存占用了7,则将之前的内存占用对齐为8.
如果C成员类型长度为2,在此之前内存占用了1,则将之前的内存占用对齐为2.
如果C成员类型长度为4,在此之前内存占用了1,则将之前的内存占用对齐为4.
(3)成员对齐完之后,结构体占用内存应该为有效对齐值的整数倍,如果不是,则对齐。