ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

cjson报错

2026/8/21 3:43:37 拓冰建站 浏览量
cjson报错
  1. 今天遇到个问题,使用CJSON把一个cjson对象给一个cjson对象的时候报错,是segment问题 ,原因是我在个cjson对象数据的时候,有几个是char的,但是是个时间的字符串,一般20位就够了,但是由于是通过modbus获取的数据,初始化是内存存的是ff,这就造成了start_time[20],超了,但是居然没有报错,然后把这个start_time给了cjson也没有报错,但是把cJson给另外一个cjson的时候,就报错了,查看cjson代码,在cjson_free(item->string)的时候报的错误,因此修改了start_time[50] = {0}多给点吧,怕错误,就不报错了

void cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)

{

if (!item)

return;

if (item->string)

cJSON_free(item->string);

item->string = cJSON_strdup(string);

cJSON_AddItemToArray(object, item);

}

sprintf(start_time,"20%02d-%02d-%02d %02d:%02d:%02d",jc_fixed.start_time_year,jc_fixed.start_time_mon,jc_fixed.start_time_dd,jc_fixed.start_time_hour,jc_fixed.start_time_min,jc_fixed.start_time_second);

        sprintf(end_time,"20%02d-%02d-%02d %02d:%02d:%02d",jc_fixed.end_time_year,jc_fixed.end_time_mon,jc_fixed.end_time_dd,jc_fixed.end_time_hour,jc_fixed.end_time_min,jc_fixed.end_time_second);