结构体内存分配总结

3 篇文章 0 订阅
结构体内存 的对齐:每个成员分配内存的时候都要放在自己的整数倍的位置上。超过四个字节的都按照4的整数倍对齐。数组类型的成员分配内存是由数组元素的类型来决定。对齐的好处:便于成员的寻址。坏处:有内存的浪费。

默认情况下结构都是对齐和补齐的。

什么是补齐:

        结构每个成员分配好内存后,从内存数也要检测,结构的从内存数必须是结构中的最大成员的整数倍,如果成员大小超过4个字节,按4个字节算,这叫做结构的补齐,结构在分配内存时每个成员要对齐,整个结构要补齐。

eg.

struct  test{

       char c;

        int i;

        char     arr[5];

       double  d;

}                       定义一个该类型结构体:从对齐来看c占第1-4个字节,i为int类型地址只能从4的整数倍的下一个开始,占第5-8个字节,接下来因为数组为char类型   所以 arr占从9-13,double类型占八个字节,但是超过四个字节,按4的整数倍对齐,所以double只能从第17个字节开始存储。该结构体一共占24个字节。从补齐的角度来检测,可以看到结构中最大数据 类型为double,大于4,但是只能为4的整数倍,           所以该结构占内存应该为4的整数倍。24正好为4的整数倍,所以该结构占24个字节。                                                                                                                                       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值