在分配的内存外写入时中断

break when writing outside allocated memory

本文关键字:中断 分配 内存      更新时间:2023-10-16

使用c++,我有一个变量意外地发生了变化,这可能是因为我在分配的内存之外写东西。我所看到的解决方案是跟随变量并找到它不应该改变的罕见位置,但这是一个非常缓慢的解决方案。是否有任何方法来配置Visual studio调试模式打破写外部分配的内存?

您可以使用Data breakpoint来捕捉变量变化的时刻。可以使用Visual Studio中的DebugNew breakpointNew data breakpoint菜单设置数据断点。

Edit:要检测内存范围违规,您可以使用一些分析工具(例如Bounds Checker),但这是您必须购买的独立产品。还可以编写自己的内存管理器来检测内存范围违规。详情请参见this, this和this。

当在Windows分配的内存外写时,通常会得到访问冲突(0xC0000005)。但是意外覆盖的变量肯定是在已分配内存中。