有没有一种方法可以在C++ / MacOS中监视堆使用情况?

3

我担心我的一些代码会导致内存泄漏,但我不确定如何检查。在MacOS X上是否有工具或其他东西可以使用?

谢谢

4个回答

5

是的 - 有一个名为MallocDebug的应用程序,这个应用程序是Xcode软件包的一部分。

你可以在/Developer/Applications/Performance Tools文件夹中找到它。


1

1
哎呀,这些链接已经失效了。 - Mark Adler

1

当然,UNIX提供了一种快速而简单的方法来检测内存泄漏... top。

启动您的应用程序并观察分配给您的进程的系统内存随时间变化。如果它在不应该增长的情况下持续增长,则很可能存在内存泄漏。此时,您可以使用Valgrind或使用MallocDebug等工具。

当然,如果您使用智能指针和/或RAII,那么您的代码中就不应该有内存泄漏了,对吧?;)))


是的,事实上我正在尝试检查我的智能指针实现是否正确工作 :) - tunnuz
不使用boost::scoped_ptr或boost::shared_ptr的原因是什么? - oz10

0

处理内存错误、泄漏等问题的最佳工具是Valgrind。在这里开始使用。您不需要在代码中进行任何特殊操作,它会报告内存分配的位置(包括完整的堆栈跟踪,即使在C语言中也是如此)。此外,它还可以检测对已释放内存的写入、未初始化的内存使用等等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接