8字节对齐(#pragma pack(8))
输出结果:sizeof(struct test_t) = 12
分析过程:
1) 成员数据对齐
#pragma pack(8)
struct test_t {
int a; /* 长度4 < 8 按4对齐;起始offset=0 0%4=0;存放位置区间[0,3] */
char b; /* 长度1 < 8 按1对齐;起始offset=4 4%1=0;存放位置区间[4] */
short c; /* 长度2 < 8 按2对齐;起始offset=6 6%2=0;存放位置区间[6,7] */
char d; /* 长度1 < 8 按1对齐;起始offset=8 8%1=0;存放位置区间[8] */
};
#pragma

本文详细介绍了C++中结构体的对齐规则,包括8字节和16字节对齐情况的分析,以及对象组合对齐的计算方法,通过实例展示了如何计算结构体的大小,并解释了对齐填充的原理。

4207

被折叠的 条评论
为什么被折叠?



