sizeof解析

1、C++中的sizeof操作符,是指对应变量在内存中占有的字节数。

2、#pragma pack (1),表示字节对齐的字节数是1。

3、struct结构体,分配空间的时候,各个变量的地址是相邻的,每次分配的单元空间为n(默认8)字节;如果多个变量加起来的字节数还没够n的话,这几个变量就会都在相同的分配单元中。

4、分配原则:判断struct所属的类型的字节数和n(1、2、4、8、16)的值比较,取较小的值作为分配内存的字节数。

5、基本类型的内存字节数:char = 1;int = 4;Long = 4;double = 8;long double = 10;如果是long double,10 > n的话,sizeof(long double) = 8。

6、例子说明:

struct A

{

    char c;

    int n;

    long l;

    double d;

};

sizeof(A) == 24; // 1、4,、4、8,分配内存的字节数为8,总数为17,介于(16,24)之间,所以结果为24

如果加上一句#pragma pack (1),则结果为17;

如果加上一句#pragma pack (2),则结果为18;

如果加上一句#pragma pack (4),则结果为20;

如果加上一句#pragma pack (8),则结果为24;// 默认情况

如果加上一句#pragma pack (16),则结果为24;// 尽管设置n为16,但是struct中最长的字节数是8




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值