- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中结构体对齐,c语言结构体对齐,c语言结构体内存对齐,c语言结构体字节对齐,c语言中的结构体,c语言中结构体的使用,c语言中结构体,c语言中结构体的定义,c语言中结构体定义,c语言结构体
C 语言中结构体对齐(来自网络)
C 语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。内容虽然很基础,但一不小心
就会弄错。写出一个struct,然后sizeof ,你会不会经常对结果感到奇怪?sizeof 的结果往往都比你声明的
变量总长度要大,这是怎么回事呢? 开始学的时候,也被此类问题困扰很久。其实相关的文章很多,感
觉说清楚的不多。结构体到底怎样对齐?
有人给对齐原则做过总结,具体在哪里看到现在已记不起来,这里引用一下前人的经验(在没有
#pragma pack 宏的情况下):
原则 1、数据成员对齐规则:结构(struct 或联合union)的数据成员,第一个数据成员放在offset
为 0 的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如 int 在 32
位机为4字节,则要从4 的整数倍地址开始存储)。
原则 2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大
元素大小的整数倍地址开始存储。(struct a 里存有struct b,b 里有 char,int,double 等元素,
那b 应该从 8 的整数倍开始存储。)
原则 3、收尾工作:结构体的总大小,也就是sizeof 的结果,必须是其内部最大成员的整数倍,
不足的要补齐。
这三个原则具体怎样理解呢?我们看下面几个例子,通过实例来加深理解。
例 1:struct {
short a1;
short a2;
short a3;
}A;
struct{
long a1;
short a2;
}B;
sizeof(A) = 6; 这个很好理解,三个short 都为2 。
sizeof(B) = 8; 这个比是不是比预想的大2 个字节?long 为4 ,short 为2 ,整个为8,因为原则3 。
例2 :struct A{
int a;
char b;
short c;
};
struct B{
char b;
int a;
short c;
};
sizeof(A) = 8; int 为4 ,char 为 1,short 为2 ,这里用到了原则1 和原则3 。
sizeof(B) = 12; 是否超出预想范围?char 为 1,int 为4 ,short 为2 ,怎么会是12?还是原则1 和原则3 。
深究一下,为什么是这样,我们可以看看内存里的布局情况。
a b c
A 的内存布局:1111, 1*, 11
(其中星号*表示填充的字节。)
b a c
B 的内存布局:1***, 1111, 11**
A 中,b 后面为何要补充一个字节?因为c 为short,其起始位置要为2 的倍数,就是原则1。c 的后面
没有补充,因为b 和c 正好占用4 个字节,整个A 占用空间为4 的倍数,也就是最大成员int 类型的倍数,
所以不用补充。
B 中,b 是char 为 1,b
您可能关注的文档
最近下载
- 26. 26个英文字母-复习课件-1字母闯关游戏(共30张PPT).pdf VIP
- 上海市职业技能等级认定试卷 模具工(四级)考场、考生准备通知单02.doc VIP
- 健康险手册使用说明.pptx VIP
- 急性心肌梗死诊断及治疗课件.ppt VIP
- 饲料添加剂项目企业经营战略手册(参考).docx
- 光伏电站项目建设方案.docx
- 数字智慧方案5496丨商业综合体地块智能化系统设计汇报方案(66页PPT).pptx VIP
- 体例格式9:工学一体化课程《小型网络安装与调试》任务1学习任务工作页.docx VIP
- 城投集团防汛防台专项应急预案(2018版).docx VIP
- 量子之年:从2025年从概念到现实报告(英文版).pdf VIP
文档评论(0)