内存泄漏和缓冲区溢出

原创 2016年08月30日 09:05:52

所谓内存泄漏(memory leak)一般是指堆内存的泄露,它是由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,造成内存保持占用状态,使操作系统不能将内存分配给其他的程序(进程)。并非指内存在物理上的消失,而是程序分配某段内存之后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露啦。


防止内存泄漏:用类来封装指针部分成员变量和动态创建的代码,这样在析构函数处,回收内存。在构造函数处使用异常捕获,以防止部分成员变量已分配动态内存但对象创建失败而引起内存泄漏。

1:在编写代码时使用智能指针smart point,这是一个实现的类似指针功能的类。主要作用是在使用该smart point时,在构造函数中new一块内存,使用结束时,自动调用析构函数,并在其中delete该内存。

2:比较常用的做法是,在编写代码后使用memory leak 检测工具。

3:尽量在构造函数里分配内存,在外部函数分配的内存,不要在调用函数里面释放,而在外部函数内释放。

4:在基类/继承类各管各的内存。

5:避免‘死循环’


缓冲区溢出:向缓冲区填充的数据位数超过了缓冲区自身的容量限制时,发生的缓冲区溢出覆盖在合法的数据。



相关文章推荐

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...

Matlab绘图-很详细,很全面

Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Ma...

CT图像重建技术

由于csdn贴图不方便,并且不能上传附件,我把原文上传到了资源空间CT图像重建技术 1.引言 计算机层析成像(Computed Tomography,CT)是通过对物体进行不同角度的射线投影测量而...

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串  find .|xargs grep -ri "IBM"  查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名  find .|xargs g...

Radon变换入门matlab CT原理

http://hi.baidu.com/hi9394/blog/item/0d492b8bfd714700c8fc7aa9.html 简介 图像投影,就是说将图像在某一方向上做线性积分(或理解为累...

Intel系列处理器的三种工作模式

Intel系列处理器的三种工作模式 微机中常用的Intel系列微处理器的主要发展过程是:8080,8086/8088,80186, 80286,80386,80486,Pentium,Pen...

js弹出框、对话框、提示框、弹窗总结

js弹出框、对话框、提示框、弹窗总结 一、JS的三种最常见的对话框 [javascript] view plaincopy //=...

form表单的两种提交方式,submit和button的用法

1.当输入用户名和密码为空的时候,需要判断。这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写;有两种方法,一种是用submit提交。一种是用button提交。 方法一: 在jsp的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内存泄漏和缓冲区溢出
举报原因:
原因补充:

(最多只允许输入30个字)