json-c 使用过程中,最重要的就是忘记释放,以下为大家总结的是否该释放点
1.json_object_new_object
json_object_new_object生成的对象必须调用json_object_put释放(主object)
2. json_tokener_parse生成的对象需要释放
json_tokener_parse生成的对象,必须使用json_object_put释放.
3. json_object_object_get出来的对象要不要释放
通过json_object_object_get获取的对象不能单独释放,因为它仍然归父节点所有。
4. 通过json_object_object_add添加到其他节点的,能不能释放
通过json_object_object_add添加到其他节点的不能再单独释放,因为他已经成为别人的子节点,他的生命周期由父节点维护了。
5. json_object_to_json_string获取到的字串要不要释放
这个free也是非法的,因为json_object_to_json_string只是把json对象内部的指针暴露给你了,借你用下而已,千万别释放。
6.json_object_from_file
json_object *pobj = NULL;
pobj = json_object_from_file(dpath); //把文件转为json对象
if(!pobj)
{
// json_object_put(pobj);//转化失败的时候不需要释放。这个也易忘
return -1;
}
...
json_object_put(pobj);
…
用完需要释放,但是转化失败的时候是不能释放的,json_object_new_object同理