变量意外地改变了值

时间:2013-04-20 18:03:34

标签: c

我的程序中有一个while循环,其中一个粒子一直移动,直到它访问了一定数量的位置(由整数placesToVisit给出)。

int dimensionLength=2;
int placesToVisit=pow(dimensionLength, 3);
while (numPlacesVisited<placesToVisit) {

  // Code which makes no changes or references to placesToVisit
  // at all (except a few printf commands for debugging).

}

我的问题是,在此循环的多次迭代之后placesToVisit突然将其值更改为1(因此过早地结束循环)。它应该具有8的常量值。此变量仅用于while循环的条件语句,没有指向它的指针,除了少量printf命令之外没有其他引用我投入调试。什么可能导致placesToVisit突然改变它的价值?

1 个答案:

答案 0 :(得分:6)

一个可能的解释是你得到了未定义的行为,因为你通过写入无效的内存位置(最有可能超出堆栈上数组的边界)来破坏你的callstack。变量placesToVisit可能是你的粉碎堆栈的牺牲品。

但是,如果没有看到您的代码,就无法确定。我怀疑你没有发布的代码会在某处显示缓冲区溢出。