是的。
数组是一段连续的内存空间,超出数组的空间访问,如果超出部分没有别分配,正常读写没啥问题,如果已经被分配那你就读写了其他数据。
如果数据是代码,程序就会跑飞,如果程序是数据,数据就会错乱。也有可能触发地址错误,进中断里面的死循环。
代码正常运行可以预知运行结果,代码出错后就不可控了,什么时候出错不知道,出什么错误不知道。就是不可控
数组越界是一种很危险的行为:
1. 因为在编译时数组空间大小就确定下来,挨着的地址空间很可能分配给其他变量,而这些变量的值可能是很重要的,所以写越界会值其它变量不可控
2. 类似上面的情况,读越界其实也很危险,因为我们不知道会有什么数据写到数组挨着的空间中,如果读到的不可控数据用作处理,很可能造成不可控的情况,试想如果是工控机器的刀具需要读取数据来控制行程,而数据是不可控的,会不会造成很大的危害?!