面试的时候,经常会遇到计算结构体大小的问题。我来用最浅显的方式来解释该问题
工具/原料
这里用到的工具为vs2019,windows平台64位
方法/步骤
1
数据成员对齐:结构体的每个数据成员的对齐按照MIN(a,b)进行 a :是指按几个字节对齐 b : 是指数据成员自身的长度
2
结构体对齐:完成步骤1后,结构体要是a的整数倍 上图大小本来是9,但为了是a的整数倍,就会凑成12;结构体的大小最终为12。
3
结构体嵌套:结构体成员从其内部最大元素大小的整数倍地址开始存储。
注意事项
1
VC等编译器默认是#pragma pack(8),gcc默认是#pragma pack(4),并且gcc只支持1,2,4对齐
2
#pragma pack(push, 4) 制定4字节对齐,#pragma pack(pop)恢复成默认
上一篇:跳绳的最佳长度图解
下一篇:键盘也能控制音量大小