c++内存泄漏自动检测库
C++ memory leak auto detection library
我正在寻找内存泄漏检测库。比如我把它包含到源代码中然后它就会开始检测。外部程序可能是好的,但我正在寻找一些库,可以链接到可执行文件。
我正在搜索Windows。
您可以在代码中使用一些技术来检测内存泄漏。最常见和最简单的检测方法是,定义一个宏(例如DEBUG_NEW)并使用它,以及预定义的宏(例如__FILE__
和__LINE__
)来定位代码中的内存泄漏。这些预定义的宏告诉您内存泄漏的文件和行号。
DEBUG_NEW只是一个宏,通常定义为:
#define DEBUG_NEW new(__FILE__, __LINE__)
#define new DEBUG_NEW
所以无论你在哪里使用new
,它也可以跟踪文件和行号,可以用来定位内存泄漏在你的程序。
和__FILE__
, __LINE__
是预定义的宏,分别计算文件名和行号,您在哪里使用它们!
阅读下面的文章,它解释了将DEBUG_NEW与其他有趣的宏一起使用的技术,非常漂亮:
跨平台内存泄漏检测器
从Wikpedia
Debug_new指的是c++中的一种技术重载和/或重新定义操作符New和operator delete的顺序拦截内存分配和解分配调用,从而调试内存使用程序。它经常涉及定义一个名为DEBUG_NEW,并使new成为类似的新文件(_ _, _ _行)记录文件/行信息分配。 Microsoft Visual c++使用微软的这种技术基础类。有一些方法扩展此方法以避免静止时使用宏重定义能够显示文件/行一些平台上的信息。在那里这有很多固有的限制吗方法。它只适用于c++,和无法捕获C语言的内存泄漏像malloc这样的函数。然而,它可以使用起来非常简单,也非常快,当与其他一些完整的内存调试解决方案。
我可以推荐Visual Leak Detector,它比Visual Studio内置的更容易使用。
对我来说,这是很长一段时间以来最好的工具:http://www.paulnettle.com/pub/FluidStudios/MemoryManagers/Fluid_Studios_Memory_Manager.zip只包含一个头文件,你就完成了:)
Visual studio在Windows上有这样的功能。参见http://msdn.microsoft.com/en-us/library/e5ewb1h3(v=VS.90).aspx。在linux下,我不知道是否存在这样的事情,但是valgrind确实可以很好地找到各种内存问题(不仅泄漏,而且无效读取)。
除了上面的,我可以建议一些好的程序:^)作为例子?
如果你正在使用vc++,这个功能是内置的。请参见使用CRT库查找非MFC应用程序的内存泄漏和检测MFC应用程序的MFC内存泄漏。
- 无法获得 std::from_chars 自动检测基础
- QImage:加载图像时自动检测格式
- 如何让Visual Studio自动检测子文件夹中的.cpp文件?
- GCC - 如何自动检测每个基本模块
- 自动检测C++14 "return should use std::move"情况
- 泄漏消毒剂检测泄漏
- c++Windows自动检测代理设置
- 函数有没有办法自动检测其参数的数据类型?(请不要建议函数重载)
- 自动检测源以进行自动制作
- 使C++初始值设定项自动检测工会成员
- 如何使用 C/C++自动检测 snmp 设备
- 用c++实现函数对象的自动检测类型
- C/C++中操作系统的自动检测
- 使用ESP8266自动检测本地服务器
- 如何以可移植的方式在C++中自动检测内存泄漏
- 一种自动检测对象的方法,该方法通过值传递给c++中的函数
- 同时自动检测COM-Port和WriteLine
- 在c++ (Windows)中自动检测Arduino
- 自动检测不带参数的模板参数
- c++内存泄漏自动检测库