C 变量意外更改值

C 变量意外更改值,c,C,我的程序中有一个while循环,其中一个粒子一直移动,直到它访问了一定数量的地方(由整数placesToVisit给出) int-dimensionLength=2; int placesToVisit=pow(尺寸长度,3); 而(numPlacesVisited一种可能的解释是,您得到了未定义的行为,因为您通过写入无效的内存位置(最有可能写入堆栈上数组的边界之外)以某种方式破坏了调用堆栈。变量placesToVisit可能是堆栈崩溃的牺牲品 但是,如果没有看到您的代码,就无法确定。我怀疑您没

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

int-dimensionLength=2;
int placesToVisit=pow(尺寸长度,3);

而(numPlacesVisited一种可能的解释是,您得到了未定义的行为,因为您通过写入无效的内存位置(最有可能写入堆栈上数组的边界之外)以某种方式破坏了调用堆栈。变量
placesToVisit
可能是堆栈崩溃的牺牲品


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

查找引用堆栈上内容的指针/数组操作。如果其中一个超出了范围,它可能会丢弃变量。在这种情况下,您需要显示所有代码。您可能正在溢出缓冲区或破坏堆栈上的其他内容。您的
dimensionLength
是否增长到1290以上(我猜想,这是
INT\u MAX
的立方根)?是否在循环中更改placestovisit的值,如果是,则可能是问题所在。此外,如果placestovisit是一个常量,则在进行更深入的调试后,将其定义为一个常量。我相信这是正确的。然而,我最终只是从头开始重写代码,一切正常。不确定错误在哪里r爬了进来,但是嘿,谢谢你的帮助!
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).

}