如何在C+;中自动检测内存泄漏+;以便携的方式? 如何在C++中自动检测内存泄漏?我正在寻找某种模板解决方案,我可以使用诸如NEW或DELETE之类的宏来跟踪创建和删除。它必须在Mac、Linux和Windows上工作。
有很多工具可用于此。例如像libfence这样的特殊图书馆。在Linux上,特别是Valgrind非常有用如何在C+;中自动检测内存泄漏+;以便携的方式? 如何在C++中自动检测内存泄漏?我正在寻找某种模板解决方案,我可以使用诸如NEW或DELETE之类的宏来跟踪创建和删除。它必须在Mac、Linux和Windows上工作。,c++,C++,有很多工具可用于此。例如像libfence这样的特殊图书馆。在Linux上,特别是Valgrind非常有用 因此,最好的“赌注”可能是获得一些malloc调试库源代码,并在所有开发中使用它 有很多工具可用于此。例如像libfence这样的特殊图书馆。在Linux上,特别是Valgrind非常有用 因此,最好的“赌注”可能是获得一些malloc调试库源代码,并在所有开发中使用它 我建议在Linux和Mac OSX上运行valgrind,在Windows上运行Microsoft Applicatio
因此,最好的“赌注”可能是获得一些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),多多少少。他们通常无法生成与泄漏源一样清晰的数据,而内置跟踪可以提供这些数据。这些工具可以提供源中未释放内存的分配位置。您还需要什么?