数组下标越界:
在引用数组元素时,使用的下标超过了该数组下标的应有范围。
内存溢出:
在初始化数组(给数组元素赋值)时,初始化(赋值)元素的个数超过了数组定义时元素的个数。对于多维数组,元素个数=每个方框框里的数字之积。
求数组元素个数也可以用公式:数组元素个数=sizeof(数组名)/sizeof(数组任意一个元素)
- 下标越界
数组定义为arr[10],它的下标范围为0-9,超过这个范围就会发生下标越界。
以上两张图是在Visual Studio2019中的运行结果,两次输入的下标都会越界,但是第一张图报错了,而第二张却没有报错,这是因为VS2019编译器在处理数组下标时,只认为当引用的下标等于数组元素个数时,下标越界,别的情况不会去检测和处理(当我输入的下标为11,程序也不会报错)。
2. 内存溢出
数组定义为count[100],则数组共有100个元素。这里初始化时,for循环一共循环了101次,所以是要给数组初始化101个元素的值,而数组只有100个元素,这样就导致了内存溢出。
但在linux(CentOS6.5)环境下,编译链接运行都可以,但程序停不下来,关闭终端时,程序仍在进行。