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

被折叠的 条评论
为什么被折叠?



