C++之sizeof 知多少

                          C++之 sizeof 知多少

sizeof计算的是在栈中分配的内存大小。

1. sizeof的使用形式:sizeof(var_name)或者sizeof var_name。变量名可以不用括号括住:sizeof a;数据类型必须用括号括起来:sizeof(int)。

2. sizeof可以对表达式求值:sizeof(2+3.14),实际是sizeof(double)。

3. sizeof可以对函数调用求值,实际上是对返回值类型求值;对引用的sizeof,其实是对其所绑定的对象的sizeof。

4. 以下情况不能用sizeof进行求值。

      1)不能对函数名求值

      2)不能对不确定返回值的类型求值,如void

      3)位域成员不可以使用sizeof求值

5. sizeof的结果是size_t,它被定义为unsigned int类型。该类型保证容纳显示所建立的最大对象的字节大小。

  一般,在32位编译器下:
      sizeof(int):4
      sizeof(short):2
      sizeof(long):4
      sizeof(long long):8
      sizeof(float):4
      sizeof(double):8
      sizeof(char):1
      sizeof(p):4,(p为指针) (32位系统下指针的sizeof是4字节,64位下是8字节)

  在不同的系统中这些值不一样。

6. sizeof与strlen()比较,在计算字符数组时,sizeof包含'\0',strlen()不包含'\0'。

7. 对数组sizeof可以计算数组的大小。

8. 数组作为形参时,数组名的sizeof是4个字节。

9. 32bit系统中,int **a[3][4];sizeof(a)=48。

10. 对于C字符串,需要牢记C/C++中一个汉字占两个字节(Linux下3个字节),且字符串尾有空字符。

11. 枚举的空间计算
  enum只是定义了一个常量集合,里面没有“元素”,而枚举是当做int类型存储的,故枚举类型的sizeof值为4。

12. 含静态变量、虚函数和字节对齐的类的空间计算。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值