C++ 内存对齐
2022-09-27
现代计算机中的内存空间以字节为单位划分,大部分 CPU 都会以 2字节、4字节、8字节......来访问内存。现代 CPU 对齐内存的主要作用是节省内存空间。
C++ 内存对齐规则
对齐规则可以由 #pragma pack(n)
来指定,其中
n
为对齐的字节数。n
可以是
1、2、4、8、16。n
默认的对齐字节数为
8(待考证,不同平台不同编译器不同)。
结构体的对齐单位,是 #pragma pack(n)
的
n
和结构体中最长数据类型的大小这两者中,最小的那个。
样例
CASE A
1 | struct A { |
CASE B
1 | struct B { |
CASE C1, C2, C3
1 | struct C1 { |
1 |
|