多语言展示
当前在线:1207今日阅读:27今日分享:41

如何计算结构体的大小

面试的时候,经常会遇到计算结构体大小的问题。我来用最浅显的方式来解释该问题
工具/原料

这里用到的工具为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)恢复成默认

推荐信息