0

我相信我在 OpenBSD 上的复杂 c++ 应用程序中发生了双重删除和一些内存损坏。我想追踪我的对象被删除的第一个位置,以及访问释放内存的任何点。

我通常会研究 valgrind,但它只是 linux。如果做不到这一点,我会使用某种跟踪代码来检测我的新操作员和删除操作员,但我发现很难确定正确的谷歌搜索。

是否有任何 openbsd 软件包可以为我提供有关内存错误的信息?是否有任何标准方法来重新定义 new 和 delete 以检测溢出、无效访问、双重释放?

4

2 回答 2

1

这很有帮助:

man malloc

调试选项可以在系统范围、环境范围或程序特定范围内启用。

于 2011-08-18T14:45:18.423 回答
-1

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

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

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

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

于 2012-01-12T13:58:29.253 回答