C/C++数据对齐
- 作者: 刘杰
- 来源: 技术那些事
- 阅读:206
- 发布: 2025-07-28 20:33
- 最后更新: 2025-07-28 21:03
对齐规则
-
结构体成员的内部偏移量要被这个成员的数据类型大小整除
-
整个数据结构的大小,必须是最大成员大小的整数倍,否则需要再末尾补充空白字节
-
结构体嵌套结构体,按照结构体展开之后的形式进行对齐
-
使用 pragma pack(n) 指定每个成员的起始地址,按照 n 来对齐,覆盖第一条规则。
注意,如果 n 比当前成员大小要大,则偏移量规则仍然取较小值。
-
不要对齐规则,pragma pack(1)
自定义对齐规则
c++
// 覆盖以上第一条规则
#pragma pack(2)