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

本文详细介绍了C程序在执行过程中的内存管理方式,包括程序如何从硬盘加载到内存,以及如何通过不同区域如堆区、栈区、全局区和程序区来管理内存资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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



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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值