我的程序出现了这样的内存泄漏(55 字节)。 我正在使用 C++、MFC、Visual Studio 2010。
检测到内存泄漏! {13497} 0x0E44C248 处的正常 block ,55 字节长。 数据:44 3A 5C 46 44 41 53....
问题是,内存分配号“13497”并不总是相同的。如果我再次运行程序,它总是不同的数字。 我想找到我在退出前没有释放内存的地方,用_crtBreakAlloc,但似乎不可能在内存分配号上中断。 我也使用了 _CrtSetDbgFlag 和 _CrtDumpMemoryLeaks,但效果也不佳。
在这种情况下有什么方法可以检测到内存泄漏吗?
谢谢。
最佳答案
您可以使用像 cppcheck 这样的静态分析器,或者如 Joe 所说,重新映射运算符 new
。
我开发了一些您可以使用的内存泄漏实用程序:
https://github.com/check69/Utils/blob/master/leaks.cpp
https://github.com/check69/Utils/blob/master/leaks.h
有一些 visual studio 指令可以获取控制台输出中的泄漏,以便更轻松地进行调试。
PS:我会把这个作为评论放在joe post,但是我需要50分才能发表评论。
关于c++ - 当内存分配数不总是相同时如何检测内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45666714/