在用keil调试时,发现开着代码优化时,就会死机,调到HardFault_Handler,不开优化时,没问题。开始还觉得keil很奇怪,为何优化就死掉了。查找可能是数组越界了,检查发现数组越界,为了可靠省心,用到10个字节的数组,就要定义多定义几个字节。开优化和不开的差异猜测是:不开时,定义的数组不紧凑,越界没破坏到其他的寄存器;开了优化后,越界正好破坏了其他的寄存器。
摸索着学习,请大家多多指导。
C语言的魅力与魅惑
定义的数组不紧凑,越界没破坏到其他的寄存器。越界的原因是什么?内存没有分配好吗?
指针越界了吧? 用到8字节,有时候指针指到8字节外了。
C语言的博大精深