<分区>
在 VS6 时代有来自 Numega 的 BoundsChecker。我明白它现在已经死了,如果我错了请指正。可靠的替代品是什么?最好是免费的,或者至少提供试用版。
标签 c++
<分区>
在 VS6 时代有来自 Numega 的 BoundsChecker。我明白它现在已经死了,如果我错了请指正。可靠的替代品是什么?最好是免费的,或者至少提供试用版。
最佳答案
IMO 编写自定义内存管理器(支持 new/delete/malloc/free 包装器的那个)可能是一个更好的主意。使用 VirtualProtect 创建一个新的/删除的包装器来锁定未使用/释放的内存(是的,我知道默认分配 block 必须是 PAGE_SIZE 字节大,即使对于一个小应用程序你也需要大量的内存,但这是唯一的坏处)。如果你在 linux 上,它可能有 VirtualProtect 替代品。在这种情况下,任何离谱的越界访问都会产生访问冲突,并且很容易被跟踪。尽可能使用 STL 容器 - 它们还提供边界检查。
这个建议是基于经验的——我曾经使用过一个写得很糟糕的巨大(几兆字节的代码)旧软件,它有内存泄漏,访问已经从多个线程释放内存等等。我花了一周时间尝试不同的实用程序(purify、devpartner studio、aqtime 等),尽管其中一些提供了大量信息,但没有一个真正有用。自定义内存管理问题在 2 天内得到解决(包括编写内存管理器)。
如果这对您不起作用,请尝试 compuware devpartner studio - 如果它在任何地方仍然可用的话。
关于c++ - BoundsChecker for Visual Studio 2008 的现代等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560858/