posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

关于C语言中结构类型的占用空间

Posted on 2006-04-28 11:34 魔のkyo 阅读(496) 评论(1)  编辑 收藏 引用 所属分类: Programming

摘自:http://www.pconline.com.cn/pcedu/empolder/gj/c/0603/768204_1.html

详细解析C语言中的sizeof
出处:CSDN[ 2006-03-14 15:29:51 ] 作者:bigbigwind8 () 责任编辑:xietaoming

  VC对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。

  VC中提供了#pragma pack(n)来设定变量以n字节对齐方式。n字节对齐就是说变量存放的起始地址的偏移量有两种情况:第一、如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式,第二、如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。结构的总大小也有个约束条件,分下面两种情况:如果n大于所有成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数;

  否则必须为n的倍数。下面举例说明其用法。

#pragma pack(push) //保存对齐状态
#pragma pack(4)//设定为4字节对齐
struct test
{
char m1;
double m4;
int m3;
}; 
#pragma pack(pop)
//恢复对齐状态

Feedback

# re: 关于C语言中结构类型的占用空间  回复  更多评论   

2010-11-26 17:47 by 不堪一击
这个有什么用可以说白一下吗谢谢
只有注册用户登录后才能发表评论。