cJson内存泄漏 free不掉

1.问题描述:使用cJson,直接赋值粘贴官网的历程,发现free(out);根本释放不掉内存。当然也有可能我看的这个官网是假的。

问题复现

发现root_json ,data_json 和 out都没有被释放,然后我就添加root_json ,data_json的释放函数。

结果如下图,结果分析:root_json 和 data_json被成功释放了,但是out还是没有被释放

2.问题解决:cJSON_CreateObject创建的指针,需要使用cJSON_Delete删除,cJSON_Print赋值的指针需要free释放。

3.其他使用记录

生成的数据使用时,转换成字符串,如果使用char *out = cJSON_Print(root_json);的话,打印出out的时候会出现很多空格回车类似的,都会占用很大的空间。

我们可以使用char *out = cJSON_PrintUnformatted(root_json);这样生成的字符串就没有了空格回车啥的了,很紧凑