C++系列(三)---进阶篇(5)

为什么使用new/malloc之后必须使用delete/free销毁对象?

众所周知,new/malloc和delete/free总是成双成对的出现,但是有没有人想过,为什么要成双成对的出现?可能有人会说,不就是内存泄漏吗。是这样没错,但是我想问什么是内存泄漏?,为什么会造成内存泄漏
首先我们来看什么是内存泄漏,内存泄漏就是程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费。而不是所谓的内存丢失。
然后我们来看为为什么会造成内存泄漏,其实关于为什么会造成内存泄漏并不难理解:关于内存是有限的,大家应该都清楚,这里的new/malloc就是动态申请了堆内存,但是如果我们new/malloc完并且对应的对象任务完成后,没有delete/free,那么,这里的堆内存对于系统而言就是一直被在使用,当这种情况变多之后就会导致内存越来越小,最终导致速度越来越慢或新申请的内存没有申请到没有做预防措施就会导致崩溃。下面我们用一个具体的场景来看为什么会造成内存泄漏:现在假设我们处于一个没有人会收拾餐桌上客人使用过的餐具的饭店里,刚开业的时候饭店空位很多,然后进来了第一位客人进来用餐,客人用餐完成后就直接离去了,但是餐桌上的餐具没有人收拾,就这样陆陆续续的又进来了很多的客人进来用餐,但是餐具都没有被清理,终于空位没了,但是进来交过钱的客人不知道,等开始用餐的时候发现没有位置,然后开始吵闹,最终打断了餐厅的运行。这里的餐厅相当于程序,不收拾餐具就相当于new或malloc之后没有delete或free,最终打断餐厅运行就是程序崩溃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无情翻译官

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

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

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

打赏作者

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

抵扣说明:

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

余额充值