使用c ++我有一个意外改变的变量,这可能是因为我在分配的内存之外写。我所看到的解决方案是遵循变量并找到它不应该改变的罕见地方,但这是一个非常缓慢的解决方案。 有没有办法在编写外部分配的内存时配置Visual Studio调试模式?
答案 0 :(得分:2)
您可以使用Data breakpoint
来捕捉变量变化的时刻。可以使用Visual Studio中的Debug\New breakpoint\New data breakpoint
菜单设置数据断点。
编辑:要检测内存范围违规,您可以使用一些分析工具(例如Bounds Checker),但这是您必须购买的独立产品。此外,还可以编写自己的内存管理器来检测内存范围违规。有关详细信息,请参阅this,this和this。
答案 1 :(得分:0)
通常,在 Windows 分配的内存外部写入时会出现访问冲突(0xC0000005)。但是你的意外覆盖的变量肯定是在已分配的内存中。