#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 是局部的变量
局部变量是放在栈区上的
栈区的使用习惯是先使用高地址,再使用低地址。
数组随着下标的增长,地址是由低到高变化的。
有图可以看出,随着数组访问,当越界后就会访问到 i 的内存空间。就会出现死循环。
这是在debug情况下才会出现的情况,当使用 release 进行优化后就不会出现死循环了,因为把 i 的地址放到了相对数组的更低的内存位置上,就不会出现越界访问访问到 i 的内存空间上。