如何以可移植的方式在C++中自动检测内存泄漏

How can I automatically detect memory leaks in C++ in a portable way?

本文关键字:C++ 自动检测 内存 泄漏 方式 可移植      更新时间:2023-10-16

如何以可移植的方式自动检测C++中的内存泄漏?我正在寻找某种模板解决方案,在那里我可以只使用像NEW或DELETE这样的宏来跟踪创建和删除。它必须在Mac、Linux和Windows上运行。

有很多工具可用于此。像dmalloc这样的E.g特殊库,像libfence这样的库。在Linux上,特别是Valgrind非常有用。

因此,最好的选择可能是获得一些malloc调试库源代码,并在所有开发中使用它。

我建议在Linux和Mac OSX上运行valgrind,在Windows上运行Microsoft应用程序验证程序。这两种工具都是免费的。

如果您想在代码中执行此操作,您可以在映射中跟踪分配。在程序退出时,您只需检查映射是否为空。如果使用宏,则可以将源行和带有分配记录的文件存储在映射中。然而,我确实相信使用工具更简单、更好。它们不仅可以帮助您跟踪新的/删除,而且不需要更改代码。

Valgrid很好——在Linux上运行;Mac。你可能想试试适用于windows的Visual Leak detector。