前言
局部变量通过栈内存保存CPU到达内存中找一块空闲地址划分成栈内存,比如数组下标访问越界的时候,实际上是对栈内存的下一个变量操作,所以这样无形之中就会修改到自己不想修改的其他变量的值,导致出错,所以像数组越界是十分危险的!关于修改到之前的变量还是修改到之后的变量 这跟栈内存的增长方式有关:满递增堆栈,空递增堆栈,满递减堆栈,空递减堆栈。
测试程序
- 结果:利用断点debug发现C变量的值改变!
#include <stdio>
int main() {
int A = 1;
int B[5];
int C = 2;
B[4] = 1;
B[5] = 0;
B[-1] = 0;
return 0;
}