- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中一个字节对齐问题的分析,c语言字节对齐,4字节对齐c语言算法,c语言结构体字节对齐,4字节对齐c语言,c语言结构体对齐,c语言内存对齐,c语言对齐,c语言左对齐,c语言右对齐
C 语言中一个字节对齐问题的分析
C 语言中一个字节对齐问题的分析
李 云
Email: yunli.sharing@
Blog:
摘要
字节对齐(alignment )是 CPU 在性能方面所面临的一个非常重要的问题。有些处理器能自动
的处理不对齐数据的访问(对字节对齐要求不严格),但是,有些处理器却无法处理(对字节对齐要
求很严格)。当处理器无法处理对齐问题时,其将引发一个异常(exception ),当然从程序的角度来
说就是出错(crash )。
对于 C 程序员,大部分情况下我们并不考虑字节对齐问题,这并不是说我们不需要考虑,而是
因为碰到这种问题的情况很少。一方面要在特定的处理器上,而另一方面和我们写的程序也有关系,
只有两个条件同时满足时问题才会出现。因此,结果给我们的感觉是“字节对齐与我无关”。
本文通过对一小段简单的代码在不同处理器上的运行结果引出对字节对齐问题的关注,同时对
其原因进行了分析。
关键词
C 语言 字节对齐
参考资料
[1] The SPARC Architecture Manual v8
1 问题的引入
下面是一段被简化的程序,分别在 Windows (32 位的 x86 处理器)和 Solaris (32 位
的 SPARC 处理器)上编译和运行,其结果将完全不同。在 Windows 上程序运行正常,但
是在 Solaris 上程序运行会出错,并且会在终端上打印出“Bus Error”以及产生一个“Core
dump ”文件。
main0.c
typedef struct
{
short mark;
char body[128];
} msg_t;
typedef struct
{
char *pointer;
} header_t;
int main ()
█ 1
C 语言中一个字节对齐问题的分析
{
msg_t msg = {0};
void *p = ((header_t *)msg.body)-pointer;
return 0;
}
为什么这么简单的一个程序在不同的操作系统(其实是处理器)上的运行结果却决然
不同?这其实是一个 CPU 字节对齐所引发的问题,下面我们通过对字节对齐问题的分析来
探究其背后的原理。后面的分析我们全部是针对运行在 32 位 SPARC 处理器上的 Solaris
操作系统进行的。
2 为什么要字节对齐
简单的说来就是为了提高 CPU 的性能,或者说是提高程序运行的效率。当然,在其背
后更有简化 CPU 设计的功效。因此,我们所写的 C 程序为了得到尽可能高的效率就必须
最大限度的满足 CPU 对于字节对齐的要求,编译器在这当中起着至关重要的作用。
下面的 C 程序编译后运行,在终端上将会打印出“size of type_t is 8 ”。为什么是8 而
不是 5 呢?这是因为编译器考虑到了运行效率从而将type_t 结构进行了 4 字节边界对齐的
处理。
#includ
您可能关注的文档
- b增强溷凝土裂纹钝化后的弯曲强度评价.pdf
- b增强热塑性基复合材料应力应变场分析.pdf
- b增强溷凝土材料的界面剪应力分布研究.pdf
- b增强热塑性树脂基复合材料的加工方法.pdf
- b增强热塑热固性复合材料力学性能研究.pdf
- b增强红柱石基复合材料烧结性能的影响.pdf
- b增强聚乳酸完全可降解材料的性能研究.pdf
- b增强聚合物加固溷凝土结构的发展综述.pdf
- b增强纸基摩擦材料摩擦磨损性能的影响.pdf
- b增强聚合物基复合材料自诊断性能研究.pdf
- 2025年中国锻铁围栏市场调查研究报告.docx
- 2025年中国椭圆型市场调查研究报告.docx
- 2025年中国无蔗糖原味豆浆市场调查研究报告.docx
- 2025-2031年中国泛在电力物联网行业发展运行现状及投资潜力预测报告.docx
- 2025年中国制袋机零件市场调查研究报告.docx
- 2025年中国智能除垢型电子水处理仪市场调查研究报告.docx
- 2025-2031年中国甘肃省乡村旅游行业市场深度研究及投资策略研究报告.docx
- 2025-2031年中国干海产品行业市场发展监测及投资战略规划报告.docx
- 2025年中国全铝图解易拉盖市场调查研究报告.docx
- 2025年中国人造毛皮服装市场调查研究报告.docx
文档评论(0)