调查指针变坏的原因(C ++)

时间:2012-02-01 10:04:14

标签: c++ visual-studio-2008 pointers visual-studio-debugging watch

我在VS 2008中研究的一段C ++代码有一个糟糕的指针。指针已正确初始化,并且只有很少的代码行引用它。我在调试时把手表放在这个指针上。

当调用某个方法时,指针的值突然从 0x05fe0040“”变为 0x00000000 Bad Ptr (在VS2008的Watch窗口中)。我无法弄清楚为什么会这样。代码行之间的指针没有操作,它会丢失其值。

我如何进一步调查?这个指针变坏的原因是什么?

我是C ++编程的新手,并且是第一次使用VS2008,所以请解释您认为相关的任何内容。

2 个答案:

答案 0 :(得分:5)

如果操作变量的任何代码未更改该值,则必须由stray/dangled pointerbuffer/array overflow访问该值。

指针变量上的

Use a memory breakpoint,这样调试器会快速显示哪些代码正在破坏它。

答案 1 :(得分:2)

您可能已在其他地方访问了数组索引或某些无效内存(例如未初始化的指针),并覆盖了指针变量的值。