代码举例 #include《stdio.h> int main() { int i=0; int arr[10]={0}; for(i=0;i<=12;i++) { arr[i]=1; } return 0; } 也就是说arr变量周围的堆栈损坏,为什莫讷? 根据这幅图我们可以做出如下解释 1.在为main函数开辟的栈帧内,地址的使用是从高地址到低地址 故变量i比数组arr低脂高 2.又因为arr数组内元素是由低地址往高地址储存的 故arr[i]可能越界,来到i的地址,并修改i变量储存的值,进而造成死循环