【发布时间】:2011-01-20 06:20:35
【问题描述】:
我正在编写一个 linux 恶魔,目前它运行良好,但它会泄漏内存(而且很糟糕 - 几个小时后,它在使用 60% 的系统内存后出现段错误)。奇怪的是,我只使用了 new/delete 运算符,并且在 main 函数周围有一个 try/catch 块,所以这不是 new 抛出的异常 - 它只是由于内存不足而导致的段错误我猜.
我使用了 valgrind,但它只发现了一次小泄漏,没有别的。我也尝试过 gdb,但尽管应用程序是使用 -g -rdynamic 标志编译的,但它并没有将所有地址转换为函数名称。
你能告诉我一些更好的内存调试方法,我可以用它们来确定泄漏的来源吗?
【问题讨论】:
-
分段错误通常不是由于缺少内存;它们的发生是因为以错误的方式访问内存(取消引用 Wild、null 或已删除的指针)或管理不善(双重删除、删除 []/删除不匹配等)。错误并不总是出现在错误点,因为可能会损坏内存,导致程序稍后失败。
标签: c++ linux memory memory-management memory-leaks