数组越界造成死循环的原因
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (i = 0; i <= 12; i++)
{
arr[i] = 0;
printf("hehe\n");
}
return 0;
}
i和arr都是main函数中的局部变量,而局部变量是开辟在内存空间中的栈空间上的。在栈空间中先使用高地址空间,再使用低地址空间。而调用数组时,是从低地址到高地址使用的。当数组越界时,就有可能使用到i的内存造成死循环。
不同的编译环境下有差异。
在VC6.0中i和arr数组中间没有空
gcc中i和arr数组中空出1个int空间
问题在于数组的越界。把数组越界修复就好了。