内存泄露和内存溢出

一、内存泄露
1.定义:指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。
2.泄露类型:
1>堆内存泄漏(Heap leak)
a.指利用malloc或new进行堆内存分配后,没有及时采用free或者delete释放内存,从而导致这个内存不能使用,出现内存泄露
2>系统资源泄露(Resource Leak)
a.指程序使用系统分配的资源比如 Bitmap,handle ,SOCKET等没有使用相应的函数释放掉,导致系统资源的浪费,严重可导致系统效能降低,系统运行不稳定
3.如何解决
1>良好的编程习惯,malloc和free,new和delete配对使用
2>重载  new 和 delete

二、内存溢出
1.定义:内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是会产生内存溢出的问题
2.溢出类型:
1>内存分配未成功,却使用了它
a.用if(p==NULL)或if(p!=NULL)进行防错处理
2>内存分配虽然成功,但是尚未初始化就引用它
a.内存在分配完成之后,记得初始化
3>内存分配成功并且已经初始化,但操作越过了内存的边界
a.如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for 循环语句中,循环次数很容易搞错,导致数组操作越界
4>使用free 或delete 释放了内存后,没有将指针设置为NULL。导致产生“野指针”
a.故释放之后一定要指向NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值