数组越界的严重性在C语言中,数组必须是静态的。 在运行程序之前,必须确定数组的大小。
C语言数组越界的重要性在于访问和更改数组元素的内容存在不确定性。
这种不可预测的修复会导致无法确定的错误,并导致缓冲区泄漏漏洞。
这就是排列越界的严重之处。
代码如下所示。
数组的下标从0开始。
那么上面的代码中,只能访问a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]和a[9]
当I被添加到10时,a[10]属于数组下标越界。
图1、详细分析堆栈并分配内存给数组,从上到下从小地址开始分配内存。 对应于数组下标:
对数组进行内存分配后,进行数组循环分配。 数组的下标为0到9,位于分配给数组的空间中。
从顶部代码可以看出,数组访问越界,如图所示访问数组范围后,操作越界空间破坏原始数据。 随后访问程序会破坏内存中的原始数据,导致缓冲区泄漏,并导致意外错误。