下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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*)m
3、alloc(20);分配得来得 10 和 20 字节的区域就在堆区。strcpy(p1, "123456"); 1234560 放在常量区,编译器可能会将它与 p3 所指向的 "123456"优化成一块。还有就是函数调用时会在栈上有一系列的保留现场及传 递参数的操作。栈的空间大小有限定, vc 的缺省是 2M 。栈不够用的情况 一般是程序中分配了大量数组和递归函数层次太深。有一点必须知道,当一个函数调用完返回后它会释放该函数中所有 的栈空间。栈是由编译器自动管理的,不用你操心。 堆是动态分配内存的,并且你可以分配使用很大的内存。但是用不好会产生内存泄漏。
4、并且频繁地 malloc 和 free 会产生内存碎片(有点类似磁 盘碎片),因为 c 分配动态内存时是寻找匹配的内存的。而用栈则不会产生碎片。 在栈上存取数据比通过指针在堆上存取数据快些。 一般大家说的堆栈和栈是一样的,就是栈 (stack) ,而说堆 时才是堆 heap.栈是先入后出的,一般是由高地址向低地址生长。在现代的操作系统中,当我们说到内存,往往需要分两部分 来讲: 物理内存和虚拟内存。 从硬件上讲, 虚拟空间是 CPU 内部的寻址空间,位于 MMU 之前,物理空间是总线上的寻 址空间,是经过 MMU 转换之后的空间。一般我们所说的程 序在内存中的分布指的就是程序在虚拟内存中的存储方式。 从低地址到高地址,可分为下面几段: 预留内存地址(操 作系统维护的内存地址,不可访问) 程序代码区(只读, 存代码和一些其他的东西) ; data 段(存初始化的全局变量 和 static 变量,另外还有文字常量区,常量字符串就是放在 这里,程序结束后有系统释放) ; bss 段(存未初始化的全 局变量和 static 变量); 堆(由低地址向高地址增长,一般 new 和 malloc 分配,由程序员分配释放) ;共享库文件(调 用的库文件,位于堆和栈之间) ; 栈(由高地址向低地址增 长,和堆的增长方式相对,对不同的 O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人房屋清理协议书
- 北京车牌转让协议书
- 北京预付卡合同范本
- 安徽事业单位联考考试招考易考易错模拟试题(共500题)试卷后附参考答案
- 宁波工程学院招考3名高层次人才易考易错模拟试题(共500题)试卷后附参考答案
- 公司搬迁补偿协议书
- 不动产购销合同范本
- 出售玉米的合同范本
- 校园安全目标协议书
- 桔园拆迁补偿协议书
- 2025-2026学年广东省深圳市宝安区西乡十几校八年级(上)期中历史试卷
- 业财融合视角下财务分析体系的创新与应用
- 五花肉课件教学课件
- 2025中数联物流科技(上海)有限公司招聘考试参考试题及答案解析
- 小学感恩教育主题班会 课件
- 新媒体营销推广案例分析
- 道路客运驾驶员从业资格年度考核报告
- 制药设备改造协议书
- 【MOOC】金融风险管理-中央财经大学 中国大学慕课MOOC答案
- 20G520-1-2钢吊车梁(6m-9m)2020年合订本
- 手术基本技术-打结、切开、止血、分离、缝合
评论
0/150
提交评论