sprintf()函数使用异常
调试STM32F103,比如如下代码:
使用springf函数,这个函数是把最后两个参数先格式化成字符串 ,输出到ERROR_STRING,如果他们合并的长度大于30会出现深情况?
char ERROR_STRING[30] sprintf(ERROR_STRING, "\n\r+ok%s%s\r\n\r\n", pOperation, pParameter);
今天遇到了这个问题,发现会进入硬件中断错误里面,估计是边界溢出。这种情况可能出现(也可能不出现),假如你原来ERROR_STRING保存的有需要的数据,那么就会被擦除,导致出现异常。
void HardFault_Stack_Dump(unsigned int *hardfault_stack)