自定义类型大小计算 内存对齐

笔试的时候经常遇到问一个结构体大小的问题。
个人觉得这种考题很撤d。结构体大小于编译器和编译参数有关。
在不标明编译器和编译参数的情况下,这个大小是无法确定的。
本人自己用VC++6.0比较多,本想找vc6.0的官方资料,可惜没有找到。
一下是自己总结的一些结论。
经过测试,没有发现例外。但这并不能说明结论是正确的。请大家留意。
  1. 变量按声明顺序在内存中排列
  2. 变量只能放在自己类型宽度的整数倍上
  3. 内部类型的宽度和sizeof(内部类型)的大小相等
  4. 自定义类型的宽度为该类型内部的变量的宽度的最大值。
  5. 类型的大小为类型宽度的整数倍。
 类型宽度可以修改。
 # pragma pack(8) 就定义了类型的最大宽度为8
 # pragma pack(1) 类型的最大宽度为1
 
大家可以自己试试
这是设置 # pragma pack(1) 的结果
 
运行环境 xp sp3 vc++6.0
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值