- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
结构变量分配内存时边界对齐要求.doc
内存对齐
在我们的程序中,数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。我们还是先来看一段简单的程序:程序一
1 #include iostream2 using namespace std;3 4 struct X15 {6 int i;//4个字节7 char c1;//1个字节8 char c2;//1个字节9 };10 11 struct X212 {13 char c1;//1个字节14 int i;//4个字节15 char c2;//1个字节16 };17 18 struct X319 {20 char c1;//1个字节21 char c2;//1个字节22 int i;//4个字节23 };24 int main()25 { 26 coutlong sizeof(long)\n;27 coutfloat sizeof(float)\n;28 coutint sizeof(int)\n;29 coutchar sizeof(char)\n;30 31 X1 x1;32 X2 x2;33 X3 x3;34 coutx1 的大小 sizeof(x1)\n;35 coutx2 的大小 sizeof(x2)\n;36 coutx3 的大小 sizeof(x3)\n;37 return 0;38 }
这段程序的功能很简单,就是定义了三个结构X1,X2,X3,这三个结构的主要区别就是内存数据摆放的顺序,其他都是一样的,另外程序输入了几种基本类型所占用的字节数,以及我们这里的三个结构所占用的字节数。这段程序的运行结果为:
1 long 42 float 43 int 44 char 15 x1 的大小 86 x2 的大小 127 x3 的大小 8
结果的前面四行没有什么问题,但是我们在最后三行就可以看到三个结构占用的空间大小不一样,造成这个原因就是内部数据的摆放顺序,怎么会这样呢?下面就是我们需要讲的内存对齐了。内存是一个连续的块,我们可以用下面的图来表示, 它是以4个字节对一个对齐单位的:图一
让我们看看三个结构在内存中的布局:首先是 X1,如下图所示
X1 中第一个是 Int类型,它占有4字节,所以前面4格就是满了,然后第二个是char类型,这中类型只占一个字节,所以它占有了第二个4字节组块中的第一格,第三个也是char类型,所以它也占用一个字节,它就排在了第二个组块的第二格,因为它们加在一起大小也不超过一个块,所以他们三个变量在内存中的结构就是这样的,因为有内存分块对齐,所以最后出来的结果是8,而不是6,因为后面两个格子其实也算是被用了。再次看看X2,如图所示
X2中第一个类型是Char类型,它占用一个字节,所以它首先排在第一组块的第一个格子里面,第二个是Int类型,它占用4个字节,第一组块已经用掉一格,还剩3格,肯定是无法放下第二Int类型的,因为要考虑到对齐,所以不得不把它放到第二个组块,第三个类型是Char类型,跟第一个类似。所因为有内存分块对齐,我们的内存就不是8个格子了,而是12个了。再看看X3,如下图所示:
关于X3的说明其实跟X1是类似的,只不过它把两个1个字节的放到了前面,相信看了前面两种情况的说明这里也是很容易理解的。
您可能关注的文档
- 组织架构中要写出你们部门人员名字.ppt
- 组织架构完善20111201.doc
- 组集中教研中心发言材料.doc
- 细胞核的分离和鉴定.ppt
- 织物布料面料防霉剂,衣料抗菌剂,阻燃助剂,防UV助剂,抗菌除臭剂.docx
- 经修订中国-东盟自贸区原产地规则签证操作程序(中译本).doc
- 经济现象和就业前景.doc
- 经阴道超声操作指南.doc
- 结晶学复习资料(重点知识).docx
- 结构主义语言学概观.pptx
- 2025年四川省大学生志愿服务西部计划招募正在进行时!笔试备考题库及参考答案详解1套.docx
- 2025年四川省大学生志愿服务西部计划招募正在进行时!笔试备考题库参考答案详解.docx
- 2025《工业锅炉设计技术的发展研究国内外文献综述》5200字.docx
- 2025《光气法合成甲苯二异氰酸酯的工艺分析概述》5600字.docx
- 2025年四川省妇女联合会所属事业单位选调5人笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年四川省妇女联合会所属事业单位选调5人笔试高频难、易错点备考题库及答案详解一套.docx
- 资料愚人节经典的活动方案.doc
- 2025年四川省委省直机关党校考核招聘专业技术人员5人笔试备考题库及答案详解1套.docx
- 2025年四川省妇女联合会所属事业单位选调5人笔试高频难、易错点备考题库参考答案详解.docx
- 2025《破产撤销权行使存在的问题分析概述》5700字.docx
最近下载
- 2024年四川省遂宁四校联考数学九上开学检测模拟试题【含答案】.doc VIP
- (高清版)-B-T 24810.2-2021 起重机 限制器和指示器 第2部分:流动式起重机.pdf VIP
- 辽2002G802 钢筋混凝土建筑抗震构造.docx VIP
- 《叶酸培训课件》PPT课件.pptx VIP
- TCES 281-2024 火电机组增加调相功能实施导则.docx VIP
- (上古易国学堂)常用汉字五行字库.pdf VIP
- 社区护理学理论知识考核试题题库与答案.pdf VIP
- 专业绿色施工节能减排的管理措施和实施记录(标准版).doc VIP
- 五行字库大全.docx VIP
- 电工用铝和铝合金在电缆工业中的应用与前景.pdf VIP
文档评论(0)