程序在内存中存储情况

上传人:s****a 文档编号:52575434 上传时间:2022-02-08 格式:DOC 页数:5 大小:33.50KB
收藏 版权申诉 举报 下载
程序在内存中存储情况_第1页
第1页 / 共5页
程序在内存中存储情况_第2页
第2页 / 共5页
程序在内存中存储情况_第3页
第3页 / 共5页
资源描述:

《程序在内存中存储情况》由会员分享,可在线阅读,更多相关《程序在内存中存储情况(5页珍藏版)》请在装配图网上搜索。

1、程序在内存中存储情况一般认为在 c 中分为这几个存储区1 栈 - 有编译器自动分配释放2 堆 - 一般由程序员分配释放,若程序员不释放,程 序结束时可能由 OS 回收3 全局区 (静态区),全局变量和静态变量的存储是放在一 块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静 态变量在相邻的另一块区域。- 程序结束释放4 另外还有一个专门放常量的地方。 - 程序结束释放在函数体中定义的变量通常是在栈上, 用 malloc, calloc, realloc 等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了 static 修饰符后不管在哪里都存放在全

2、局区 (静态区),在所有函数体外定义的 static 变量表示在该文件中有效,不能 extern 到别的文件用, 在函数体内定义的 static 表示 只在该函数体内有效。另外,函数中的 adgfdf 这样的字符串存放在常量区。比如:char *p1; 全局未初始化区 main()int; 栈chars =abc; 栈char*p2; 栈char*p3 =123456;1234560 在常量区, p3在栈上。staticint c=0 ; 全局(静态)初始化区p1= (char*)malloc(10);p2= (char*)malloc(20);分配得来得 10 和 20 字节的区域就在堆区。

3、strcpy(p1, 123456); 1234560 放在常量区,编译器可能会将它与 p3 所指向的 123456优化成一块。还有就是函数调用时会在栈上有一系列的保留现场及传 递参数的操作。栈的空间大小有限定, vc 的缺省是 2M 。栈不够用的情况 一般是程序中分配了大量数组和递归函数层次太深。有一点必须知道,当一个函数调用完返回后它会释放该函数中所有 的栈空间。栈是由编译器自动管理的,不用你操心。 堆是动态分配内存的,并且你可以分配使用很大的内存。但是用不好会产生内存泄漏。并且频繁地 malloc 和 free 会产生内存碎片(有点类似磁 盘碎片),因为 c 分配动态内存时是寻找匹配的内

4、存的。而用栈则不会产生碎片。 在栈上存取数据比通过指针在堆上存取数据快些。 一般大家说的堆栈和栈是一样的,就是栈 (stack) ,而说堆 时才是堆 heap.栈是先入后出的,一般是由高地址向低地址生长。在现代的操作系统中,当我们说到内存,往往需要分两部分 来讲: 物理内存和虚拟内存。 从硬件上讲, 虚拟空间是 CPU 内部的寻址空间,位于 MMU 之前,物理空间是总线上的寻 址空间,是经过 MMU 转换之后的空间。一般我们所说的程 序在内存中的分布指的就是程序在虚拟内存中的存储方式。 从低地址到高地址,可分为下面几段: 预留内存地址(操 作系统维护的内存地址,不可访问) 程序代码区(只读, 存代码和一些其他的东西) ; data 段(存初始化的全局变量 和 static 变量,另外还有文字常量区,常量字符串就是放在 这里,程序结束后有系统释放) ; bss 段(存未初始化的全 局变量和 static 变量); 堆(由低地址向高地址增长,一般 new 和 malloc 分配,由程序员分配释放) ;共享库文件(调 用的库文件,位于堆和栈之间) ; 栈(由高地址向低地址增 长,和堆的增长方式相对,对不同的 OS 来说,栈的初始大 小有规定,可以修改,目前默认一般为 2M ,由编译器自动 分配释放); 再上面存的都是操作系统和内核调用的一些内 存地址。如图所示:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!