c++ - BoundsChecker for Visual Studio 2008 的现代等价物

标签 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/

相关文章:

c++ - 在 C++ 11 中将非常量左值引用绑定(bind)到右值是否有效?(已修改)

c++ - 如何在不设置ulimit -n的情况下解决Socket程序打开太多文件的错误

c++ - 无法启动 OpenGL 窗口

c++ - 是否可以更早地销毁对象,使其存储内存被后续对象重用?

C++矩阵类模板

c++ - g++ c++11 constexpr 评估性能

c++ - 如何在 C++ 类中设置数组

c++ - 添加 float openCV3.0

c++ - 使用另一个类中的构造函数来分配带有 new 的数组

c++ - 是为类的用户覆盖还是为实现者覆盖?