Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;内存泄漏自动检测库_C++_Memory - Fatal编程技术网

C++ C++;内存泄漏自动检测库

C++ C++;内存泄漏自动检测库,c++,memory,C++,Memory,我正在搜索内存泄漏检测库。 类似于我将它包含到源代码中,然后它应该开始检测。外部程序可能很好,但我正在寻找一些可以链接到可执行文件的库。 这是我正在搜索的窗口 如果您使用的是VC++,那么该功能是内置的。有关非MFC应用程序和MFC应用程序,请参阅。Visual studio在Windows上具有此功能。看见在linux下,我不知道是否存在这样的问题,但发现所有类型的内存问题(例如,不仅是泄漏,还有无效读取)确实很好。我可以建议,它比Visual Studio内置的更易于使用。您可以在代码中使用

我正在搜索内存泄漏检测库。 类似于我将它包含到源代码中,然后它应该开始检测。外部程序可能很好,但我正在寻找一些可以链接到可执行文件的库。

这是我正在搜索的窗口

如果您使用的是VC++,那么该功能是内置的。有关非MFC应用程序和MFC应用程序,请参阅。

Visual studio在Windows上具有此功能。看见在linux下,我不知道是否存在这样的问题,但发现所有类型的内存问题(例如,不仅是泄漏,还有无效读取)确实很好。

我可以建议,它比Visual Studio内置的更易于使用。

您可以在代码中使用一些技术来检测内存泄漏。最常见和最简单的检测方法是,定义宏,例如,调试新宏并使用它,以及预定义的宏,如
\uuuuu FILE\uuuuu
\uu LINE\uuuu
,以查找代码中的内存泄漏。这些预定义宏告诉您内存泄漏的文件和行号

DEBUG_NEW只是一个宏,通常定义为:

#define DEBUG_NEW new(__FILE__, __LINE__)
#define new DEBUG_NEW
因此,无论您在哪里使用
new
,它都可以跟踪可用于查找程序内存泄漏的文件和行号

\uuuuuuuuuuuuuuuuuu
\uuuuuuuuu行
分别计算文件名和行号

请阅读以下文章,该文章介绍了将DEBUG_NEW与其他有趣的宏一起使用的技巧,非常漂亮:


< >调试新是指C++中的一种技术 重载和/或重新定义运算符的步骤 新建和删除操作员,以便 截取内存分配并 取消分配调用,从而调试 用于内存使用的程序经常 涉及定义一个名为 调试新的,并使新成为 类似于new(文件、行) 在上记录文件/行信息的步骤 分配:<强微软> Visual C++使用 这项技术在微软的 基础类。有一些 扩展此方法以避免 在静止时使用宏重新定义 能够显示文件/行 一些平台上的信息。那里 这有许多固有的局限性 方法。它只适用于C++,并且 无法通过C捕获内存泄漏 像malloc这样的函数。然而,它可以 使用非常简单,也非常方便 快,当与一些更 完整的内存调试器解决方案


对我来说,这是很长一段时间以来最好的工具:
只需包含1个头文件,您就完成了:)

除了上面提到的,我可以推荐一些好的程序:^)作为示例?最好使用Windows的Delaker。

+1我的建议。这是我最喜欢的检测泄漏的方法之一,但维护分配地址的列表,并根据每次删除时发送的删除地址进行检查是一种性能激励(O(n)=nlog(n))。这里需要指出的是,仅在调试版本中使用此技术,而不在发布版本中使用。@Als:我认为此技术显然应仅在调试版本中使用,因为我选择(或通常选择)的宏名称是
debug\u NEW
。仅明确提及此项。不管怎么说,你有我的+1:)不过,就像前几天一样,我看不到任何独角兽。。。。