我正在编写一个 Linux 恶魔,目前它运行良好,但它会泄漏内存(这很糟糕 - 几个小时后,它会在使用 60% 的系统内存后出现段错误)。奇怪的是,我只使用了 new/delete 运算符,并且在 main 函数周围有一个 try/catch block ,所以这不是 new 抛出的异常——我猜它只是在某些时候由于内存不足而出现段错误.
我使用了 valgrind,但它只发现了一次小泄漏,除此之外什么都没有。我也尝试了 gdb,但尽管该应用程序是使用 -g -rdynamic
标志编译的,但它并未将所有地址转换为函数名称。
你能告诉我一些更好的内存调试方法,我可以用它来确定泄漏源吗?
最佳答案
Valgrind 通常在查找泄漏方面非常可靠,所以您确定这是内存泄漏吗?
堆分析器可以帮助您查看正在创建的对象以及它们是否是您期望的对象。 Massif就是这样一种可能有用的工具。
关于c++ - 如何调试奇怪的内存泄漏 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2321574/