其他分享
首页 > 其他分享> > 结构体对齐

结构体对齐

作者:互联网

结构体对齐规则:
1.结构体变量的首地址一定 是这个结构体变量中 最大的基础(内置)类型的大小的整数倍
2.结构体变量中每一个成员 相对于结构体首地址的偏移 一定是该成员的基础数据类型大小的整数倍
3.结构体变量的总大小 一定是这个结构体变量中 最大的基础类型的大小的整数倍

示例:  

 

 

 

如果允许修改默认对齐大小,则规则变更:

默认的内存对齐大小 :vs默认8字节   gcc默认4字节
1.结构体变量的首地址一定 是这个结构体变量中 Min(最大的基础(内置)类型的大小, 默认的对齐规则大小)的整数倍
2.结构体变量中每一个成员 相对于结构体首地址的偏移 一定是该成员的min(基础数据类型大小, 默认的对齐规则大小)的整数倍
3.结构体变量的总大小 一定是这个结构体变量中 Min(最大的基础类型的大小, 默认的对齐规则大小)的整数倍

#pragma pack(1) //修改默认大小
#pragma pack()//恢复默认大小

 

 

标签:变量,整数倍,默认,大小,对齐,结构
来源: https://blog.csdn.net/qq_42795061/article/details/121715964