单片机数组操作需谨慎-程序跑飞原因之一

2019-04-15 12:48发布

调STM32时时不时碰到一个现象就是,程序跑到某个地方就完全黑掉了,完全无响应,或者说有时候数据乱了,本来就没操作某个变量于是莫名其妙就变了,我遇到的这种情况一般原因是数组操作界限超了,,,比如int buf[10] 结果写了到了buf[10],buf[11]-----因为C程序的RAM分配是由编译器完成的一般都是紧密相连的,所以只要超出一点点,就意味着风险,当然如果是汇编 一般都是出栈入栈不配对 导致返回的地址错误。这种概念 一般修炼到一定程度才会真正理解体会