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调试报告。