[C++]内存对齐

编译器会对内存自动进行对齐,以加快内存读取。

内存对齐主要遵循下面三个原则:

1.结构体变量的起始地址能够被其最宽的成员大小整除
2.结构体每个成员相对于起始地址的偏移能够被其自身大小整除,如果不能则在前一个成员后面补充字节
3.结构体总体大小能够被最宽的成员的大小整除,如不能则在后面补充字节

比如struct的字节大小并不是单纯按照所有元素的字节和相加。
可以用系统预编译来进行调节,#pragma pack(1)默认就是紧凑存放的。
linux下默认#pragma pack(4),#pragma pack()恢复缺省对齐

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注