相同的结构体成员,如果把顺序调整一下,会不会影响结构体的大小?
答案是会的,这主要跟字节对齐有关。
比如这样的结构体,前面两个是 char 类型,后面跟上一个 int 类型。
struct A
{
char a;
charb;
intc;
};
它在内存中的排序是这样的,第一个 char 占 1 个字节,紧接着第 2 个 char 也占 1 个字节。
因为最后是个 int 类型,所以中间还要空 2 个字节。要保证 int 的偏移是 4 的整数倍。
结构体最终长度就是 8 个字节。
下面调整一下,把第 2 个 char 放到 int 的后面。
struct B
{
char a;
int b;
char c;
};
第一个 char 任然占 1 个字节,由于后面是 int,中间还得空 3 个字节。
最后的 char 占 1 个字节。
由于 int 的存在,结构体的总长度必须是 4 的整数倍,所以结果就是 12。
成员的顺序一旦变了,他们在内存中的排布方式就会不一样,结果也就不同。
-
内存
+关注
关注
9文章
3173浏览量
76125 -
结构体
+关注
关注
1文章
131浏览量
11300
原文标题:结构体成员的顺序会不会影响结构体的大小
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
一体成型电感的制作工序简述
结构体声明与定义
为什么不建议用匿名结构体
can_sample例程,rxmsg.hdr = -1;语句报错如何解决?
定义IO初始化结构体
渗压计在混凝土结构体中的安装指南

结构体成员的顺序会影响结构体的大小吗
评论