VLD不检测内存泄漏,而CRT Debug显示内存泄漏

时间:2013-06-04 05:16:17

标签: debugging crt

Mine是遗留代码,并且引入了长时间内存泄漏。 我正在使用

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

在终止/退出代码中的任何位置时隐式调用_CrtDumpMemoryLeaks();。我知道如果我们显式调用_CrtDumpMemoryLeaks();并且某些全局对象存在,那么将报告内存泄漏。这就是为什么不直接调用_CrtDumpMemoryLeaks()

获取内存泄漏,因为我在整个代码中使用“new”确切的行号和文件名不会出现(尽管声明#define _CRTDBG_MAP_ALLOC)。我有3个选项:

1. Use VLD: but it does not report any leaks.
2. Override new operator so that CRT works. But get error that new is redefined. actually since it is a huge code base, some other place has overriden it conflicts are arising
3. Use number in curly braces and use _crtbreakalloc , but that number is not stable across runs. thus cannot use this strategy as well.

请帮我解决这个问题。任何更好的内存泄漏检测工具?我也在Linux上使用过Valgrind。它也没有报告任何内存泄漏。只有CRT调试报告。

0 个答案:

没有答案