suoyudong的博客

c/c++技术

运行程序内存分析。(c语言)

  程序存放在硬盘中,当要执行程序时,操作系统将硬盘中的代码加载到内存,找到main函数作为程序入口,开始执行。程序执行的过程是在内存中完成的,下面说一下c程序执行中内存的管理:

可以将其分为四大分区(也可以分为五大分区):堆区(heap)。由操作系统管理,malloc/free/delete等代码建立,一般由程序员分配与释放(即申请和释放),如果程序员不释放,程序结束后可能由操作系统回收。

栈区。是由编译器自动分配和释放,存放局部变量,函数参数值等。

全局区:存放常量和全局变量,静态变量,由操作系统管理。(这个区实际上可以分为两个内存存储区,即常量区和全局区。)

程序区:即代码区,存放二进制代码。

ps:现在只讨论c语言,c++为了区分new和malloc新增自由存储区概念。

函数的执行过程中,操作系统只为其分配一个内存四区模型,即一个栈,堆,。。。。函数的调用实际上是进栈出栈的过程。



练习根据代码画出内存分析图:


阅读更多
文章标签: 内存 分区
个人分类: c语言
下一篇测试堆和栈的开口方向
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭