结构体的大小 内存对齐

结构体的大小 内存对齐

 

Struct A

{

   int a;

   int b;

};

 int main()

{

Printf(“%d\n”,sizeof(struct A));

共占8字节

 

Struct B

{

char a;//1+3(加上3成为4的倍数,虽浪费了3个字节,但速度更快)

int b;//4

};

共占8字节


 

 Struct C

{

   char a;//1+1(加上12的倍数)

   short b;//2

   int c;//4

}

共占8字节

 

Struct D

{

   char a;//1+3(加上34的倍数)

   int b;//4

   int c;//4

   double d;//8+4(所有字节加起来之和要为8的倍数,一共是20字节,并不是8的倍数因此在加上424248的倍数,全部加起来要是最大的那一个的倍数才可)

}

共占24字节

 

 Struct E

{

   char a;//1+3(加上34的倍数)

   int b;//4

   short c;//2+2(原来字节之和为10,因为最大的为int类型,判断10不是4的倍数,因此在加两个字节即可)

}

共占内存10+2字节//考虑数组的内存

Struct E arr[2]

 

 对比:

 

 

Struct G//不需要考虑对齐的应用

{

  char a;//1

  char x;//保留,不适用

  short b;//2

  int c;//4

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值