【发布时间】:2015-12-06 19:55:12
【问题描述】:
我很想知道如何在基于 C/C++ 的产品在重负载(Linux 平台)下检测到内存泄漏。
我知道 Valgrind 在查找内存泄漏、无效访问等方面做得很好。
但是使用 valgrind,产品需要在低负载下运行。使用 valgrind,您不能期望在高负载下运行产品。
高负载下,产品代码执行路径可能不同。在这种情况下,如果存在内存泄漏,如何捕获该内存泄漏。
有没有这样的工具可用?
【问题讨论】:
-
最好的工具是你的头脑和良好的实践
-
你不能一边吃蛋糕一边吃。您需要找到一种方法来测试这些不同的执行路径,而无需让内存分析器通过它们来处理它们。
-
根据我的经验,最好的事情是,虔诚地使用 RAII 对象并确保您知道如何正确使用它们。 (它仍然归结为您的头脑和良好实践。)(此建议仅适用于 C++。)
-
根据您的设计,您可以使用 valgrind 检查产品的各个类或子模块。我可以想象使用我的代码的合理子集编写某种虚拟进程。
标签: c++ c memory-leaks