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