我正在寻找内存泄漏检测库。
像我一样将它包含在源代码中然后它应该开始检测。外部程序可能是好的,但我正在寻找一些可以链接到可执行文件的库。
这是我在寻找Windows。
答案 0 :(得分:4)
我可以建议使用Visual Leak Detector,它比Visual Studio内置的更容易使用。
答案 1 :(得分:4)
您可以在代码中使用某些技术来检测内存泄漏。最常见,最简单的检测方法是,定义一个宏,例如DEBUG_NEW并使用它,以及预定义的宏,如__FILE__
和__LINE__
,以找到代码中的内存泄漏。这些预定义的宏告诉您内存泄漏的文件和行号。
DEBUG_NEW只是一个MACRO,通常定义为:
#define DEBUG_NEW new(__FILE__, __LINE__)
#define new DEBUG_NEW
因此,无论您在何处使用new
,它都可以跟踪可用于查找程序中内存泄漏的文件和行号。
__FILE__
,__LINE__
为predefined macros,分别评估您使用它们的文件名和行号!
阅读以下文章,该文章解释了将DEBUG_NEW与其他有趣的宏一起使用的技巧,非常漂亮:
A Cross-Platform Memory Leak Detector
来自Wikpedia,
Debug_new是指C ++中的一种技术 过载和/或重新定义操作员 new和operator delete为了 拦截内存分配和 解除分配调用,从而调试一个 内存使用程序。 经常 涉及定义一个名为的宏 DEBUG_NEW,让新成为 像new(_ FILE _,_ LINE _) 记录文件/行信息 分配。 Microsoft Visual C ++使用 这种技术在微软 基础课程。有一些 扩展此方法以避免的方法 仍然使用宏重新定义 能够显示文件/行 某些平台上的信息。那里 这有很多固有的局限性 方法。它仅适用于C ++和 无法通过C捕获内存泄漏 像malloc这样的函数。但是,它可以 使用非常简单,而且非常简单 比较快一些 完整的内存调试解决方案。
答案 2 :(得分:2)
Visual Studio在Windows上有这样的功能。见http://msdn.microsoft.com/en-us/library/e5ewb1h3(v=VS.90).aspx。在linux下我不知道是否存在这样的东西,但valgrind非常适合找到所有类型的内存问题(不仅是泄漏,而且还有无效的读取)。
答案 3 :(得分:2)
对我而言,这是很长一段时间内最好的工具: http://www.paulnettle.com/pub/FluidStudios/MemoryManagers/Fluid_Studios_Memory_Manager.zip 只需包含1个头文件,您就完成了它:)
答案 4 :(得分:0)
如果您使用的是VC ++,则会内置该功能。对于非MFC应用,请参阅Finding Memory Leaks Using the CRT Library;对于MFC应用,请参阅Detecting memory leaks in MFC。
答案 5 :(得分:0)
除了上述内容,我可以建议一些好的程序:^)例如?最好在Windows上使用deleaker。