C++程序的内存格局通常分为哪几个区

发布时间:2021-09-18 16:23:01

一、五大内存分区?
? ????在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。?
? ? ??栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。?
? ? ??堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。?
? ? ??自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。?
? ? ??全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。?

? ? ??常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改?


二、详细说明:
????????1、栈区(stack)? 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。?
????????2、堆区(heap) ? 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。?
????????3、全局区(静态区)(static)?,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放?
????????4、文字常量区?常量字符串就是放在这里的。 程序结束后由系统释放?
????????5、程序代码区?存放函数体的二进制代码。?

三、例子程序?
这是一个前辈写的,非常详细?
//main.cpp?
int a = 0; 全局初始化区?
char *p1; 全局未初始化区?
main()?
{?
int b; 栈?
char s[] = "abc"; 栈?
char *p2; 栈?
char *p3 = "123456"; 123456在常量区,p3在栈上。?
static int c =0; 全局(静态)初始化区?
p1 = (char *)malloc(10);?
p2 = (char *)malloc(20);?
分配得来得10和20字节的区域就在堆区。?
strcpy(p1, "123456"); 123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
}??
注:
????1.一般,我们说堆栈的时候,其实指的就是栈而已。所以这里说他们2个是一个意思也是对的。
????2.?堆栈中的堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。?
? ? 堆分配的时候首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。
? ? 这点和数据结构中的出堆很像,还有有一定的联系的?
? ? 3.因为"abc" 在编译的时候,编译器认为它是一个常量,把他分配到了数据区中。而char p2[]="bbb",是在程序运行的时候临时在栈中分配空间存放的。

相关文档

  • 六年级班级工作计划第一学期
  • 普希金的有关爱情诗
  • 2021年初中昆虫记个人读后感作文多篇
  • 关于幸福人生的名人名言
  • 补精气血中药方有什么呢
  • 高考进入备考状态的四大方法
  • 什么软件可以把视频文件中的声音提取出来
  • 怎么用万用表测量水泵电机是否烧了
  • 计算机二级c语言(考点总结二之改错题)
  • 电脑正常关机电源cpu风扇还在转
  • 农村创业的励志经历
  • 给爱人生日祝福的话语
  • 2021苹果11二手价格
  • 学年现代教育技术组计划教育工作计划
  • 相信自己一定能行励志美文
  • 小学2010—2020年学年度下期教学教研工作计划
  • 试论完善中小企业财务治理目标
  • 如何用键盘关机
  • 公司前台客服试用期转正工作总结2020年
  • 中医小常识 10个秋季养生秘诀
  • SpringCloudGateway笔记(3)-Predict与自定义Predict
  • 小学班主任的工作计划参考范文
  • 华为手机屏幕滑不动怎么办
  • 滚床单有助于女性减肥吗性生活对女性有什么好处
  • 早上洗头和晚上洗头哪个危害更大早上洗头和晚上洗头的坏处
  • 当今世界上最长的长城
  • 2019泉州纺织服装职业学院各专业录取分数线汇总
  • 考研复试经验
  • Java打印圣诞树
  • 高二语文必修三课后作业练习题答案
  • 猜你喜欢

  • 牛津译林 七年级英语上册unit3 Welcome to the unit(共36张PPT)
  • 滇池流域花卉蔬菜废弃物对湖泊水质影响的模拟研究
  • 学校冬至活动总结范文(通用6篇)
  • Tether已在以太坊扩容方案Hermez Network上发行USDT
  • 北师大版小学数学四年级上册期末模拟试卷
  • 2020年中学学校后勤工作计划
  • 佛山市佰富勤汽车用品有限公司企业信息报告-天眼查
  • SOX A Comparison With the South African Status Quo
  • 如何有效导入卓越绩效管理剖析
  • 外国语学校党支部党建工作经验交流材料
  • 邢台县张尔庄乡景刘庄白云粉厂企业信用报告-天眼查
  • 最新苏教版小学四年级语文下册期末按课文内容填空
  • P2764 最小路径覆盖问题
  • 濮阳市建盛商贸有限公司企业信息报告-天眼查
  • 穿越时空的对话 高三作文900字
  • 情感语录短句 情话
  • 第三章 税收征收管理法律制度
  • 2011年哈尔滨省中考语文模拟试题(
  • 激励机制在我国国企知识型员工中的运用
  • 以太网的工作原理是什么
  • 四川红旗丝绸有限公司孔雀茧站企业信用报告-天眼查
  • 在WORD中插入文本框与艺术字
  • 【一线精品】初中物理-机械能13 教科版最新精品公开课件
  • 中国古代四大美女工笔高清(word文档良心出品)
  • 中小学作文素材:书本之争
  • 电视剧《生逢灿烂的日子》观后感
  • 阜新市种子公司沈阳经营处企业信用报告-天眼查
  • 会计实务:企业财务管理中的税收筹划
  • 2015-2016学年第一学期 人教版小学四年级语文期中试卷
  • (新)人教版高中政治必修一1.1《揭开货币的神秘面纱》精品课件(共26张PPT)
  • 胆大的弟弟
  • 右旋美托咪啶在超声胃镜检查中的应用
  • Excel取消自动行高调整(取消自动换行)
  • 国外零售企业营销战略借鉴研究
  • 2019律师年终个人工作总结范文
  • 铸造杂志社一行三人走访西北工业大学凝固技术国家重点实验室
  • 浅谈社会主义新农村建设中应注意的几个问题
  • 读过海子后
  • 探讨寻常型银屑病鳞屑程度与维吾尔医体液(helit)学说关系
  • 第二讲 经济学是一门社会科学
  • [精品推荐]豆制品加工项目建设可行性研究报告-Word版可编辑
  • 新课标高中物理7.6《探究功与物体速度变化的关系》课件人教版必修二
  • 电脑版