Tus*_*aha -3 c c++ arrays loops
调试下面提到的代码进入无限循环的原因
int a[10];
int i;
for(i=0;i<=10;i++) {
a[i]=0;
}
Run Code Online (Sandbox Code Playgroud)
我无法找到任何有效的解释.虽然有一种可能性[9]指向我......但它似乎并不令人信服
"缓冲区溢出"的经典副作用.在这种情况下,正在发生的是i的值被覆盖.检查变量的范围,它是一个10字节0到9的数组.但是你循环11个字节0到10.
将循环更改为
int a[10];
int i;
for(i=0;i<10;i++) {
a[i]=0;
}
Run Code Online (Sandbox Code Playgroud)
它不会进入无限循环.同样,这是" 缓冲区溢出 " 的问题,并且可能具有未定义的行为.在您的情况下,未定义的行为是无限循环.