文档中心
办公用品 > 知识宝库 > 什么是内存泄漏?

什么是内存泄漏?

时间: 2023-03-01 14:55:15 来源:麦嘉办公

什么是内存泄漏?
指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。
根据发生的方式来进行分类的话,内存泄漏可以分为4类:
1.常发性内存泄漏:发生内存泄漏的代码会被多次执行到,每次执行都会导致一块内存的泄漏。
2.偶发性内存泄漏:发生内存泄漏的代码只有在特定的环境或者操作过程下才会发生。 常发性和偶发性是相对的。 对于特定的环境,偶发性的也就编程常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。
3.一次性内存泄漏:发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块且仅有一块内存发生泄漏。比如在类的构建函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。
4.隐士内存泄漏:程序运行过程中不停的分配内存,直到程序结束才能够释放内存。严格的说这并没有发生内存泄漏,因为程序最终释放了所申请的内存。但是对于一个服务器程序,可能需要运行 几天,几周,几月,甚至几年。如果不及时的释放内存,系统的内存资源最终都会被消耗完。so我们称这种的为隐士的内存泄漏。对于用户来说内存泄漏没什么影响,因为他们并不在乎。而且一般的用户根本也感受不到这个东西。真正有害的是内存泄漏的堆积,因为这最终会消耗尽所有的系统资源。 从这个角度来说的话,一次性内存泄漏,其实并没有什么危害,因为他不会大量的堆积。而隐式内存泄漏则危害最大。因为较之于常发性或偶发性的内存泄漏。他更加的难以被发现。

分享到:
共执行 853 个查询,用时 0.137924 秒,在线 4273 人,Gzip 已禁用,占用内存 6.220 MB