首页 > 其他 > 详细

C程序的内存分区

时间:2019-06-16 11:51:57      阅读:113      评论:0      收藏:0      [点我收藏+]

一般来说,每个C语言编写的程序都需要经过保存,预处理,编译,汇编,链接,最后生成二进制可执行文件,然后才能运行。这个可执行文件在运行之前,存放在电脑硬盘;执行的时候,被调入内存。

同时,我们要了解:组成C语言程序的不同的元素(如变量、常量、指令等)要放在内存中不同的地方,我们看下图:

技术分享图片

这个就是内存的分区表格,C编译器将内存划分成几个分区,将C语言程序的不同元素放入不同的分区。不同分区不仅仅存放的程序元素不同,而且生命周期不同。管理内存加载和释放的管理者也不同。代码区和程序数据区(或者叫静态区、全局区)是编译器(也许是操作系统)管理,堆区是程序员管理(有的编译器也帮助管理,作为防火墙性质地存在,防止程序员忘记释放内存),栈区则是实时加载和释放,函数的参数值、返回值、局部变量等随着函数运行结束,自动加载,自动释放(这个应该是编译器管理)。

其实,按照C语言程序的生命周期,整个内存分区可以分为三个部分:

第一部分:代码区和程序数据区,存放指令和全局变量、静态变量、常量,生命周期是整个程序运行过程。

第二部分:堆区,存放内容及生命周期由程序员指定。

第三部分:栈区,存放函数的参数值、返回值、局部变量,相关内存的内容随着程序结束运行而释放。

C程序的内存分区

原文:https://www.cnblogs.com/GoldCrop/p/11030984.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!