中级会员
 
- 积分
- 264
- 金钱
- 264
- 注册时间
- 2019-3-26
- 在线时间
- 105 小时
|
10金钱
网上有人说把Heap_Size调大,我把它调成0xC00后运行四次就死机了,调成0x4000后运行十次左右死机,总不能无限制的往上调吧?我怀疑不是Heap_Size的问题,感觉可能是我内存释放方面的原因,我这里解析了一个大的json后,又从中分离出了第二级、第三级的json,希望大家看看哪里出了问题。
void json_parse()
{
cJSON *root,*result,*data1,*data2,*data3;
char *datatime;
int tempval;
root=cJSON_Parse(pszjsontext);//文本转化成json结构体
result=cJSON_GetObjectItem(root, "data");//在root中继续分离出一个节点
data1=cJSON_GetObjectItem(result, "datastreams");//在result中继续分离一个节点
datastreams=cJSON_Print(data1);//将分离出的新节点转成字符串;
deletechar(datastreams,'[');
deletechar(datastreams,']');//去掉中括号
data2=cJSON_Parse(datastreams);//去掉中括号后再次打包成json文本
data3=cJSON_GetObjectItem(data2, "datapoints");//继续分离一个新节点
tempval=cJSON_GetObjectItem(data3, "value")->valueint;//分离出value的值
printf("%d\r\n",tempval);//显示数值
cJSON_Delete(root);//删除根节点
//free(datastreams);
}
加上最后一行注释掉的代码后,运行次数又增加好多,真是神奇,想不明白,求解答
|
最佳答案
查看完整内容[请看2#楼]
free(datastreams);替换成cJSON_free(datastreams);吧 ,你移植的时候free应该重定义了
|