0
点赞
收藏
分享

微信扫一扫

数组越界可能造成死循环的原因

A邱凌 2022-02-24 阅读 82

数组越界造成死循环的原因

#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空间

问题在于数组的越界。把数组越界修复就好了。

举报

相关推荐

0 条评论