c++ - 如何调试奇怪的内存泄漏 (C++)

标签 c++ linux memory memory-management memory-leaks

我正在编写一个 Linux 恶魔,目前它运行良好,但它会泄漏内存(这很糟糕 - 几个小时后,它会在使用 60% 的系统内存后出现段错误)。奇怪的是,我只使用了 new/delete 运算符,并且在 main 函数周围有一个 try/catch block ,所以这不是 new 抛出的异常——我猜它只是在某些时候由于内存不足而出现段错误.

我使用了 valgrind,但它只发现了一次小泄漏,除此之外什么都没有。我也尝试了 gdb,但尽管该应用程序是使用 -g -rdynamic 标志编译的,但它并未将所有地址转换为函数名称。

你能告诉我一些更好的内存调试方法,我可以用它来确定泄漏源吗?

最佳答案

Valgrind 通常在查找泄漏方面非常可靠,所以您确定这是内存泄漏吗?

堆分析器可以帮助您查看正在创建的对象以及它们是否是您期望的对象。 Massif就是这样一种可能有用的工具。

关于c++ - 如何调试奇怪的内存泄漏 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2321574/

相关文章:

C++ 覆盖 operator= 以调用 ToInt() 方法

linux - 如何虚拟化 Linux 应用程序正在监听的 IP 端口?

linux - 更好的 bash 脚本将每行文件的两个条目读入两个变量

android - Android Studio 中具有高内存分配的堆转储永远不会完成

java - 实时监控 JVM 的堆使用情况

mysql - 内存 VS MyIsam tmpfs?

c++ - 如何使用 SSE 高效地进行 int8/int64 转换?

javascript - Node 的 C++ 附加组件,非阻塞?

c - 如何修复CONFIG_RETPOLINE = y,但编译器不支持

c++ - 什么是POSIX,有什么其他的接口(interface)标准可以替代它?