1

我已经尝试了几个小时才能让它工作。到目前为止,它确实发现了内存泄漏,但它发现了很多,我不确定这是否现实。另外我想查看文件和行号(我知道这是可能的,但我无法让它工作),这样我就可以真正解决内存泄漏问题。

我已经添加了代码以在一种经常调用的方法中转储内存泄漏(通常每秒大约 60 次),我不确定它是否可以,但因为我没有真正的“主要”功能,所以很难决定将代码放在哪里。

这是我添加的内容:

// This part is in the includes part of the file
#define _CRTDBG_MAPALLOC
#define _CRTDBG_MAP_ALLOC_NEW
#include <stdlib.h>
#include <crtdbg.h>

#ifdef _DEBUG
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif

// This part is in the method
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
_CrtDumpMemoryLeaks();

谢谢您的帮助!

4

2 回答 2

1

Try

Visual Leak Detector

http://www.codeproject.com/Articles/9815/Visual-Leak-Detector-Enhanced-Memory-Leak-Detectio

I had very good results with it.

于 2012-03-16T08:55:51.140 回答
0

使用 crt,您可以在执行操作之前和之后比较内存状态。为了实现这一点,只需在单元测试中使用 _CrtMemDifference。这个概念是编写单元测试,它将调用代码的不同部分,并在使用 _CrtMemCheckpoint 之前和调用之后获取应用程序内存的状态。因此,之后您必须将两个检查点与_CrtMemDifference 进行比较。

于 2012-03-16T10:50:08.373 回答