【编译、链接、装载十四】堆与内存管理

一、堆与内存管理

相对于栈而言, 堆这片内存面临一个稍微复杂的行为模式: 在任意时刻, 程序可能发出请求, 要么申请一段内存, 要么释放一段已申请过的内存, 而且申请的大小从几个字节到数GB都是有可能的, 我们不能假设程序会一次申请多少堆空间, 因此, 堆的管理显得较为复杂。 下面让我们来了解一下堆的工作原理。

1、什么是堆

光有栈对于面向过程的程序设计还远远不够, 因为栈上的数据在函数返回的时候就会被释放掉, 所以无法将数据传递至函数外部。 而全局变量没有办法动态地产生, 只能在编译的时候定义, 有很多情况下缺乏表现力。 在这种情况下, 堆(Heap) 是唯一的选择。

堆是一块巨大的内存空间, 常常占据整个虚拟空间的绝大部分。 在这片空间里, 程序可以请求一块连续内存, 并自由地使用, 这块内存在程序主动放弃之前都会一直保持有效。 下面是一个申请堆空间最简单的例子。

int main()
{
   
   
char
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑同学的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值