前言

局部变量通过栈内存保存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;
}