在做的工程项目中出现了内存泄露的问题,什么Visual Leak Detecter之类的都不管用(和Opencv一起,编译就出错),找了各种检测方法,都不能如愿检测出来。
后来看到一个帖子中说:
假如是用MFC的程序的话,很简单。默认的就有内存泄露检测的功能。
我们用VS2005生成了一个MFC的对话框的程序,发现他可以自动的检测内存泄露.不用我们做任何特殊的操作. 仔细观察,发现在每个CPP文件中,都有下面的代码:
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
DEBUG_NEW 这个宏定义在afx.h文件中,就是它帮助我们定位内存泄漏。
之前看到没当回事,这次才发现虽然我也是用MFC写的,但是许多后台处理的类,是直接定义成一般的c++类,因此在这些cpp文件中并没有上面这三行代码。灵机一动,就把三行代码都加到了cpp文件中,果然检测出了内存泄露的位置···