日志参数 %n 引起的coredump

今天测试发现一段代码 coredump,居然是一行日志输出。看参数都乱了,以为是内存溢出造成的。查了半天,也没发现问题

最后把前边的函数调用都注释掉,只运行这一段日志输出,依然挂掉

仔细一看: 

TRACE_INFO("INSP_USED_ID [%s] Current MEAS_ITEM Cnt [%d] not Equal [%d] need QaSamle\n", ...
%d 写成了 %n 
TRACE_INFO("INSP_USED_ID [%s] Current MEAS_ITEM Cnt [%n] not Equal [%n] need QaSamle\n",
 
而且 %n , 也有自己的用处:
 
在C printf() 中,%n是一个特殊的格式说明符,它不打印某些内容,printf() 统计出现在 %n 之前的字符数,并将该值赋值给参数变量。
好奇怪的用处啊,啊哈哈。
 
 
posted on 2022-09-21 14:06  皖南  阅读(117)  评论(0)    收藏  举报