69、什么是内存泄露,如何检测与避免

内存泄露

一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小 可以在程序运行期决定)内存块,使用完后必须显式释放的内存。应用程序般使用malloc,、realloc、 new等函数从堆中分配到块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否 则,这块内存就不能被再次使用,我们就说这块内存泄漏了

避免内存泄露的几种方式

1.计数法:使用new或者malloc时,让该数+1,delete或free时,该数-1,程序执行完打印这个计 数,如果不为0则表示存在内存泄露

2.一定要将基类的析构函数声明为虚函数

3.对象数组的释放一定要用delete []

4.有new就有delete,有malloc就有free,保证它们一定成对出现

检测工具:

Linux下可以使用Valgrind工具

Windows下可以使用CRT库

原文地址:https://www.cnblogs.com/crbhf/p/14979063.html