为什么下面的代码进入无限循环
Why below code goes into infinite loop?
调试为什么下面提到的代码进入无限循环
int a[10];
int i;
for(i=0;i<=10;i++) {
a[i]=0;
}
我无法找到任何有效的解释。虽然一种可能性是[9]指向我...,但似乎并不令人信服
"缓冲区溢出"的经典副作用。在这种情况下,发生的事情是我的价值被覆盖。检查变量a的范围是10个字节0到9的数组。但是,循环为11个字节0到10。
将循环更改为
int a[10];
int i;
for(i=0;i<10;i++) {
a[i]=0;
}
它不会进入无限循环。同样,这是" 缓冲区溢出"的问题,并且可能具有不确定的行为。在您的情况下,未定义的行为是无限循环。
i
的值等于10
,
a[i]=0;
通过一个访问权限。它调用不确定的行为。一切都可能发生。
此代码具有未定义的行为。但是,如果它进入无限循环,最合适的解释是a[10] = 0
用0覆盖i
,因为i
在a
之后立即定义,因此,在存储器中,最有可能将其放置在阵列元素之后的连续元素。
您可以尝试一下,以免获得不确定的行为:
int i, a[10];
for(i = 0; i <= 9; i++)
a[i]=0;
相关文章:
- 为什么这段代码会导致无限循环?
- 试图找出为什么我的代码保持无限循环
- C++代码崩溃并具有无限循环
- 为什么我的代码在 c++ 中无限循环.我的代码需要反复提示用户
- 从二进制文件加载列表后,我的代码似乎进入了无限循环
- QuickSort中使用的Hoare分区代码(Ref Cormen Book)陷入无限循环
- 为什么我的埃拉托色尼代码筛子无限循环.我已经用几个数字进行了测试
- 为什么这段代码陷入无限循环?
- 这段代码处于无限循环中,想知道如何解决它
- 在给定长度无限循环的情况下,在Collatz猜想中查找起始数的代码
- 为什么下面的代码进入无限循环
- 如何在 c++ 中从".in"格式的文件中获取输入?此代码进入无限循环,但适用于".txt"文件格式
- 输入验证,需要数字,而不是字符串.代码导致无限循环
- 为什么这段代码最终会进入一个无限循环,读取std::cin
- 代码无限循环不能只打印一次
- 这段代码可能会陷入无限循环吗?
- 为什么此代码不显示计算的正确答案,为什么它会无限循环?
- 为什么我的 c++ 代码会进入无限循环
- 为什么这个代码片段无限循环
- 代码在小输入时运行良好,但在大输入时就像一个无限循环