相同的结构体成员,如果把顺序调整一下,会不会影响结构体的大小?
答案是会的,这主要跟字节对齐有关。
比如这样的结构体,前面两个是 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。
成员的顺序一旦变了,他们在内存中的排布方式就会不一样,结果也就不同。
-
内存
+关注
关注
8文章
3002浏览量
73887 -
结构体
+关注
关注
1文章
130浏览量
10833
原文标题:结构体成员的顺序会不会影响结构体的大小
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论