结构体元素顺序与结构体的大小

本文探讨了结构体在32位系统中的内存布局和大小,指出编译器如何进行内存对齐以提高效率。通过实例展示了不同元素顺序导致的结构体大小差异,并建议在声明结构体时考虑内存对齐以节省空间。
摘要由CSDN通过智能技术生成

说明:暑假中看书想到的一点东西,因当时没有电脑,无法验证,所以到学校后验证一下才发。
     
   先看一个例子,有三个结构体的定义如下:
struct  a    
{
 bool    b1;
 bool    b2;
 int     i1;
 int     i2;
 int     i3;
};

struct  b
{
 int     i1;
 int     i2;
 int     i3;
 bool    b1;
 bool    b2;
};
  
struct  c

{
 int       ii1;
 bool      bb1;
 int       ii2;
 bool      bb2;
 int       ii3;
   
};
   对于上面定义的两个结构体,考虑下面的两个问题:
   1.三个结构体大小的理论值和实际值各是多少?
   2.三个结构体所占的内存空间大小(实际所占非理论值)是否相同?为什么?
对于1我们很容易得出结果,三个结构体大小的理论值都是14。因为在32位的系统中int的大小是4byte,bool的大小为1byte,而结构体的大小为各元素所占大小的和,所以理论值为14,至于实际大小我们也可以很容易的得到:
#include<iostream>
using namespace std;
int main

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值