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);这样生成的字符串就没有了空格回车啥的了,很紧凑