C语言 release版本为什么数组大小要加1,否则就会数组越界,造成堆栈的缓冲区溢出?

我在一个函数里定义了一个大数组,来存数据,然后处理完后退出这个函数的时候,在Debug版本能够运行,结果也正确,换到Release版本就有错误中断,说堆栈溢出。

图片说明

然后我把这个数组大小加了1就能运行通过了。。。
这是为什么啊!

debug版本的内存更稀疏一些,所以数组越界的错误不容易暴露出来,不等于说debug的程序你就是对的。