gpt4 book ai didi

c - 变量意外更改值

转载 作者:太空宇宙 更新时间:2023-11-04 05:41:54 25 4
gpt4 key购买 nike

我的程序中有一个 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 突然改变它的值?

最佳答案

一个可能的解释是你得到了未定义的行为,因为你以某种方式通过写入无效的内存位置(很可能写入超出堆栈数组的边界)来破坏你的调用堆栈。变量 placesToVisit 很可能是您破坏堆栈的牺牲品。

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

关于c - 变量意外更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16123526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com