内存对齐规则
内存对齐规则
1.规则:
-
数据成员的偏移量以min(pack(n),最大成员占用字节)的整数倍进行对齐。
2.其它说明
-
内存对齐,是指数据在内存中的存放位置必须是其对齐字节数(一个无符号整数,且必须是2的幂)的倍数。这样做可以提高数据访问的效率和性能。
-
C++中,不同类型的数据有不同的默认对齐字节数,例如int为4,char为1,double为8等。如果数据是自定义类型(如类或结构体),则其正常对齐字节数等于其最大成员的对齐字节数。
-
C中还可以使用#pragma pack(n)或__attribute__((aligned(n)))等指令来修改默认的对齐方式。C11还引入了alignof和alignas两个关键字来获取或设置数据的对齐字节数。
案例
请看下面的代码:
// 例1:默认对齐方式 |
发布于