检测windows上free()后的使用情况.(悬挂指针)

roo*_*ook 3 c c++ security testing

我正在尝试检测"使用后免费()"错误,否则称为"悬空指针".我知道Valgrind可以用来检测*nix平台上的"免费使用"错误,但是Windows呢?如果我没有来源怎么办?是否有比Valgrind更好的程序来检测程序中的所有悬空指针?一个免费的开源将是首选,但我将使用商业解决方案,如果它将完成工作.

Han*_*ant 5

MSVC调试内存分配器已经这样做了.当你从指针取消引用得到0xfeeefeee时,你已经悬空了.有一些运气会炸弹程序.


Mic*_*urr 5

您可以使用gflags.exeWindows调试工具,使堆在过程中检查:

自从我使用它以来已经有一段时间了,老实说我记不清它与C运行时堆的交互程度,而不是Windows堆管理器(确保每个malloc()/ free()/ new/ delete调用都是单独检查的).

免费,但不是开源.