C语言结构体类型占用的内存空间问题。

共用体(union)所占的字节数是最大的成员内存。


结构体(struct)类型占用的内存空间的计算方法:


首先需要确定是在32位系统,还算在64位系统

    是所有成员的内存的和,但是需要注意,默认情况下是按照32位4字节对齐的,64位系统是根据最大变量的长度确定对齐的,如果最长数据为8字节,则8字节对齐,如果最长数据为4字节,则4字节对齐
    32系统4字节对齐时,如下分析:
    每行4个字节,字符数据按照一个一个的存储;short型数据按照2个字节2个字节的存储;int和folat,以及long,double按照4个字节4个字节存储
    64位系统4字节对齐时,和32位系统一样。
    64位系统8字节对齐是,如下分析:
    每行8个字节,字符数据按照一个一个的存储;short型数据按照2个字节2个字节的存储;int和float,按照4个字节4个字节的存储,long和double型按照8个字节8个字节的存储
    只有结构体中有2个以上的数据时,才考虑对齐问题,如果只有一个,这个类型长度是多少,结构体长度就是多少
    **只有在有2个以上成员时才需要对齐,对齐时按照最长类型对齐,但是也需要考虑系统的位数,如果是32位系统,最多4字节对齐,如果64位系统,按照最长类型的字节数对齐
    *结构体和共用体指针的长度在32位系统上是4,在64位系统上是8


     *如果是32位,最多32位,4字节对齐,
     *如果是64位,最大对齐位数是结构体中最长的数据类型,不受64位系统长度的限制,比如可以按照long double 16位对齐
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值