有关 内存溢出、泄露、越界、缓冲区溢出、栈溢出

前言:借鉴学习+自我理解。若是有不恰当的地方,希望大家可以不吝赐教。
--------------------------------------------------------------------------------------------------------------------------------------------------------
内存溢出( out of memory):是指程序在申请内存时,没有足够的内存空间供其使用(也可以理解我们 要求分配的内存超出了系统能给的,系统不能满足需求 ),所以出现out of memory;比如系统只能存放integer的空间,而你却申请了存放long,于是引起内存溢出
打个比方:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。

内存泄露(memory leak):向系统申请分配内存时使用(new),但是使用完后不归还(delete),使得申请到的那块内存你自己也不能再访问了(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。
打个比方:向朋友借了一支笔,用后却没有归还(也许你不知道把它丢哪了),导致朋友以后都不能再把这支笔借给有需要的人了。

以发生的方式来分类,内存泄漏可以分为4 类:
1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。

2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。

3. 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值