我相信我在OpenBSD上的复杂c ++应用程序中有双重删除和某些内存损坏。我想跟踪删除对象的第一个位置,以及访问释放内存的所有点。
我通常会查看valgrind,但它只是linux。如果做不到这一点,我会使用某种跟踪代码检测我的新操作员和删除操作符,但我发现很难确定正确的谷歌搜索。
是否有任何openbsd包可以提供有关内存错误的信息?是否有任何一种标准方法可以重新定义new和delete以检测溢出,无效访问,双重释放?
答案 0 :(得分:1)
这有很大帮助:
man malloc
可以在系统范围,环境范围或程序特定的情况下启用调试选项。
答案 1 :(得分:-1)
我不知道你是否愿意使用第三方工具,但C ++内存验证器非常好。
http://www.softwareverify.com/cpp-memory.php
它隔离了内存/句柄泄漏,告诉你泄漏了多少内存并显示代码中的位置。如果只有它可以为您修复泄漏:)30天免费试用也可用。
我用它来查找我的旧C ++ MFC应用程序中的泄漏,以前的开发人员似乎认为不需要重新调用内存!