我在VS 2008中研究的一段C ++代码有一个糟糕的指针。指针已正确初始化,并且只有很少的代码行引用它。我在调试时把手表放在这个指针上。
当调用某个方法时,指针的值突然从 0x05fe0040“”变为 0x00000000 Bad Ptr (在VS2008的Watch窗口中)。我无法弄清楚为什么会这样。代码行之间的指针没有操作,它会丢失其值。
我如何进一步调查?这个指针变坏的原因是什么?
我是C ++编程的新手,并且是第一次使用VS2008,所以请解释您认为相关的任何内容。
答案 0 :(得分:5)
如果操作变量的任何代码未更改该值,则必须由stray/dangled pointer或buffer/array overflow访问该值。
指针变量上的Use a memory breakpoint,这样调试器会快速显示哪些代码正在破坏它。
答案 1 :(得分:2)
您可能已在其他地方访问了数组索引或某些无效内存(例如未初始化的指针),并覆盖了指针变量的值。