




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内存对齐在我们的程序中,数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。我们还是先来看一段简单的程序:程序一1 #include 2 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个了。再看看X
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国变压器电机行业投资前景及策略咨询报告
- 2025至2030年中国双脉冲可编程焊接机行业投资前景及策略咨询研究报告
- 2025至2030年中国双波峰焊锡机行业投资前景及策略咨询报告
- 2025至2030年中国双刀距切绞肉两用机市场调查研究报告
- 2025至2030年中国厨房专用风机行业发展研究报告
- 中国电动汽车车载充电器行业市场调研分析及投资战略规划报告
- 2024年中国火电运维行业调查报告
- 2025年中国金铅锌铜探选行业竞争格局分析及投资战略咨询报告
- 2025年中国静电吸附式高效空气净化器市场前景预测及未来发展趋势报告
- 汽车行业合同管理流程
- 张成福《公共管理学》(修订版)课后习题详解
- 2024年安徽省中考英语真题(原卷版+解析版)
- 氟化碳作为二次电池正极材料的研究
- 2024年黑龙江齐翔建设投资集团有限公司招聘笔试冲刺题(带答案解析)
- 2024年佛山市高三二模普通高中教学质量检测二 数学试卷(含答案)
- 福建省国土空间规划(2021-2035年)公众版
- 青春期性教育完整版课件
- 2024年广东省广州市番禺区九年级中考一模数学试卷
- MOOC 计量经济学-西南财经大学 中国大学慕课答案
- 2023年北京八十中初二(下)期中数学试卷(教师版)
- 麻醉护理的现状与展望
评论
0/150
提交评论