2011-08-18 61 views
0

我相信我在OpenBSD的复杂C++应用程序中发生了双重删除和一些内存损坏。我想追踪我的对象被删除的第一个位置,以及任何取消分配内存的位置。在OpenBSD中有哪些可用于C++内存调试的选项?

我通常会查看valgrind,但它只是linux。否则,我会用新的和删除操作符来跟踪某些跟踪代码,但是我一直发现很难确定正确的谷歌搜索。

是否有openbsd的任何包会给我关于内存错误的信息?有没有什么标准的方式来重新定义新的和删除来检测溢出,无效访问,双重释放?

回答

1

这有很大帮助:

man malloc 

调试选项可启用全系统的环境范围,或特定的程序。

+1

将malloc标志作为一个好开始。 –

-1

我不知道你是否愿意使用第三方工具,但C++内存验证器是非常好的。

http://www.softwareverify.com/cpp-memory.php

它隔离内存/句柄泄漏,告诉你多少内存泄漏,并显示您在代码中的位置。如果只是它可以为你修复泄漏:)30天免费试用也可用。

我用它来查找我遗留的C++ MFC应用程序中的泄漏,其中以前的开发人员似乎并不认为需要永久释放内存!

+0

此工具仅适用于Windows!谢谢,但我一直在寻找一个可以在OpenBSD中工作的工具或库,或者有关检测“新”和“删除”的最佳实践的信息。 – fuzzyTew

相关问题