Memory management c+中的内存泄漏+;

Memory management c+中的内存泄漏+;,memory-management,Memory Management,如何检测内存泄漏。我的意思是,是否有可用的工具/实用程序或任何代码(即运算符new和delete重载),或者我只需要检查代码中的new和delete 如果有任何工具/实用工具,请告诉我。如果存在代码,那么任何人都可以解释哪些代码?可能帮助您的工具: Linux: Win32: 如果使用适当的函数(delete,free,free,释放,释放,,释放,,,,,)释放内存,则必须检查分配的每一位内存。可能帮助您的工具: Linux: Win32: 如果使用适当的函数(delete,free,释放,释

如何检测内存泄漏。我的意思是,是否有可用的工具/实用程序或任何代码(即运算符new和delete重载),或者我只需要检查代码中的new和delete


如果有任何工具/实用工具,请告诉我。如果存在代码,那么任何人都可以解释哪些代码?

可能帮助您的工具:
Linux:
Win32:


如果使用适当的函数(
delete
free
free
释放,
释放,
释放,
)释放内存,则必须检查分配的每一位内存。

可能帮助您的工具:
Linux:
Win32:

如果使用适当的函数(
delete
free
释放,
释放,
释放,
释放,
释放,
释放,
释放,

  • 使用例如boost:shared_ptr而不是裸指针
  • 使用以下方法之一分析您的应用程序:
      • 使用例如boost:shared_ptr而不是裸指针
      • 使用以下方法之一分析您的应用程序:

      一种方法是将分配内存的模块的文件名和行号字符串(通过指针)插入分配的数据块中。文件和行号是用C++标准“<强>文件<强>”和“<强>行<强>”宏处理的。当内存被取消分配时,该信息将被删除


      我们的一个系统具有此功能,我们称之为“内存占用报告”。因此,无论何时,我们都可以从CLI打印出所有已分配的内存以及谁已分配内存的一大列表信息。此列表按分配的内存最多的代码模块排序。很多时候,我们会通过这种方式监控内存的使用情况,最终内存占用(泄漏)会出现在列表的顶部。

      一种方法是将分配内存的模块的文件名和行号字符串(通过指针)插入到分配的数据块中。文件和行号是用C++标准“<强>文件<强>”和“<强>行<强>”宏处理的。当内存被取消分配时,该信息将被删除


      我们的一个系统具有此功能,我们称之为“内存占用报告”。因此,无论何时,我们都可以从CLI打印出所有已分配的内存以及谁已分配内存的一大列表信息。此列表按分配的内存最多的代码模块排序。很多时候,我们会通过这种方式监控内存的使用情况,最终内存占用(泄漏)会出现在列表的顶部。

      valgrind是一种非常强大的工具,可以用来检测内存泄漏。安装后,您可以运行

      valgrind --leak-check=full path/to/program arguments...
      

      valgrind将运行程序,查找泄漏并向您报告。

      valgrind是一个非常强大的工具,您可以使用它来检测内存泄漏。安装后,您可以运行

      valgrind --leak-check=full path/to/program arguments...
      

      valgrind将运行该程序,发现泄漏并向您报告。

      我还可以推荐UMDH:

      我还可以推荐UMDH:

      您最好的解决方案可能是使用,这是一种更好的工具

      如果您使用Xcode在OSX中运行,则可以使用泄漏工具。如果单击“使用性能工具运行”并选择“泄漏”,它将显示已分配和泄漏的内存


      不过要记住的是。列出的大多数工具仅描述在内存泄漏发生时捕获内存泄漏的工具。所以,如果您有一些代码泄漏内存,但很少被调用(或者很少被调用,以至于在测试内存泄漏时不会遇到),那么您可能会错过它。如果您想要在代码中实际运行的东西,您需要一个静态分析器。我所知道的唯一一个是,但它是针对C和Obj-C的(我不知道它是否支持C++)。

      您最好的解决方案可能是使用,这是一个更好的工具

      如果您使用Xcode在OSX中运行,则可以使用泄漏工具。如果单击“使用性能工具运行”并选择“泄漏”,它将显示已分配和泄漏的内存

      不过要记住的是。列出的大多数工具仅描述在内存泄漏发生时捕获内存泄漏的工具。所以,如果您有一些代码泄漏内存,但很少被调用(或者很少被调用,以至于在测试内存泄漏时不会遇到),那么您可能会错过它。如果您想要在代码中实际运行的东西,您需要一个静态分析器。我知道的唯一一个是,但它是针对C和Obj-C的(我不知道它是否支持C++)