1. Problem
在STM32调试的时候发现,定义的一个数组后,还没给它赋值,它自己就已经有数值了,而且这些数值还在一直变化,特别奇怪。
后来花了不少功夫才认识到原来是栈(stack)溢出了,因为默认的1024Byte,而后来修改的代码中,定义了几个比较大的数组,如Data_buffer2[100],这就超过栈的默认大小了,出现栈溢出了,这个数组里的值就不知道是从哪里来的了。
溢出现象如下图:
这个数组只是被定义了:
unsigned char Data_Buffer2[100]={0};
还没开始赋值,已经出现各种奇奇怪怪的数组,这就是stack溢出后的结果
2. Solution
解决方法也很简单,只要把栈stack的大小设大就好了,后来直接改成64k,就没有问题了
这是再查看数组里的数据就是正常的,不会再出现奇怪数值了。