C++笔记 | C++结构体占有空间计算

首先需要明白,64位系统,不同变量占有的空间为

 char 1个字节  
      char*(即指针变量): 8个字节 32位系统为4字节)
      short int : 2个字节  
      int  4个字节  
      unsigned int : 4个字节  
      float:  4个字节  
      double:    8个字节  
      long:   8个字节 32位系统下为4字节,大小和int一样)
      long long:  8个字节  
      unsigned long:  8个字节 32位系统下为4个字节)

然后需要明白,64位系统在内存管理方面遵循8字节对齐(32位系统为4字节对齐),原则:8字节对齐的情况下,按8个字节为单位分配存储空间,如果不足,会自动补充,本次分配不足以存放下面的变量时,会重新分配空间。

比如

struct A{

   unsigned int a;

   char b[2];

   double c;

   short d;

}

比如要计算sizeof(A),如何计算呢

首先unsigned int a为4个字节,还剩4个字节分配给char b[2],无论是在类还是结构体中,数组类型都占有数组中变量占有空间乘以个数,这里的char b[2]占有2个字节,还剩2个字节

Double c占有8个字节,额外需要申请8个字节,占有6个,剩下两个字节

这两个字节刚好给d

总共占用24个字节

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值