Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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++中自动检测内存泄漏?我正在寻找某种模板解决方案,我可以使用诸如NEW或DELETE之类的宏来跟踪创建和删除。它必须在Mac、Linux和Windows上工作。_C++ - Fatal编程技术网

如何在C+;中自动检测内存泄漏+;以便携的方式? 如何在C++中自动检测内存泄漏?我正在寻找某种模板解决方案,我可以使用诸如NEW或DELETE之类的宏来跟踪创建和删除。它必须在Mac、Linux和Windows上工作。

如何在C+;中自动检测内存泄漏+;以便携的方式? 如何在C++中自动检测内存泄漏?我正在寻找某种模板解决方案,我可以使用诸如NEW或DELETE之类的宏来跟踪创建和删除。它必须在Mac、Linux和Windows上工作。,c++,C++,有很多工具可用于此。例如像libfence这样的特殊图书馆。在Linux上,特别是Valgrind非常有用 因此,最好的“赌注”可能是获得一些malloc调试库源代码,并在所有开发中使用它 有很多工具可用于此。例如像libfence这样的特殊图书馆。在Linux上,特别是Valgrind非常有用 因此,最好的“赌注”可能是获得一些malloc调试库源代码,并在所有开发中使用它 我建议在Linux和Mac OSX上运行valgrind,在Windows上运行Microsoft Applicatio

有很多工具可用于此。例如像libfence这样的特殊图书馆。在Linux上,特别是Valgrind非常有用


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

有很多工具可用于此。例如像libfence这样的特殊图书馆。在Linux上,特别是Valgrind非常有用


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

我建议在Linux和Mac OSX上运行valgrind,在Windows上运行Microsoft Application Verifier。这两种工具都是免费的


如果您想在代码中这样做,您可以在映射中跟踪分配。在程序退出时,您只需检查映射是否为空。如果使用宏,则可以将源行和文件与分配记录一起存储在映射中。不过,我相信使用工具更简单、更好。它们不仅可以帮助您跟踪新建/删除,而且不需要更改代码。

我建议在Linux和Mac OSX上运行valgrind,在Windows上运行Microsoft Application Verifier。这两种工具都是免费的


如果您想在代码中这样做,您可以在映射中跟踪分配。在程序退出时,您只需检查映射是否为空。如果使用宏,则可以将源行和文件与分配记录一起存储在映射中。不过,我相信使用工具更简单、更好。它们不仅可以帮助您跟踪新的/删除的内容,而且不需要更改代码。

很好-适用于Linux和Mac。您可能想尝试windows。

很好-适用于Linux和Mac。您可能想尝试Windows。

您可以考虑替换<代码>新< /COD>和<代码>删除< /代码>以收集诊断信息以及跟踪内存泄漏。良好的读取:&注意这不是真正的自动方式。要实现的是,您不需要以便携的方式检测它们。如果代码本身是可移植的,那么在一个平台上检测它们(并压扁它们)应该也能摆脱其他平台。@MatthieuM.:不幸的是,Bug通常是编译器/平台特定的。@亚历克斯:在这种情况下,您需要调试特定的受影响的编译器/平台。您可以考虑替换<代码>新< /代码>和<代码>删除< /代码>以收集诊断信息以及跟踪内存泄漏。好的阅读:注意这不是一个自动的方式。要知道的是您。不需要以便携方式检测它们。如果代码本身是可移植的,那么在一个平台上检测它们(并压扁它们)也应该可以消除其他平台。@MatthieuM:不幸的是,错误通常是编译器/平台特定的。@Alex:在这种情况下,您需要调试特定的受影响编译器/平台。大多数工具和调试CRT(例如)只跟踪新建/删除(/malloc/realloc/free),或多或少。他们通常无法生成与泄漏源一样清晰的数据,而内置的跟踪功能可以。这些工具可以提供源中未释放内存的分配位置。您还想要什么?大多数工具和调试CRT(例如)只跟踪新建/删除(/malloc/realloc/free),多多少少。他们通常无法生成与泄漏源一样清晰的数据,而内置跟踪可以提供这些数据。这些工具可以提供源中未释放内存的分配位置。您还需要什么?