【发布时间】:2019-01-15 15:30:56
【问题描述】:
我正在我的 C 应用程序中试验内存错误并使用 valgrind,我在 json-c 库周围看到了许多奇怪的东西。
所以看了网上的一些信息,我看到了这个post关于json_object_new_object
所以我有 2 个问题要弄清楚: 第一个是关于json构造的
当我将一个对象添加到另一个对象时,我是否必须释放第一个对象? 示例:
json_object * jobj1 = json_object_new_object();
json_object * jobj2 = json_object_new_object();
json_object_object_add(jobj1,"Object", jobj2);
...
json_object_put(jobj); // Is it enough to free all the json tree??
根据这个post 似乎还可以,但还没有真正得到答复。
问题 2:
看看这个tuto,似乎不需要释放任何东西,只需要查看我的valgrind日志,json_object_new_object被称为:
by 0x4F7F4CF: json_object_new_object (in /lib/x86_64-linux-gnu/libjson-c.so.3.0.1)
by 0x4F81B38: json_tokener_parse_ex (in /lib/x86_64-linux-gnu/libjson-c.so.3.0.1)
by 0x4F82316: json_tokener_parse_verbose (in /lib/x86_64-linux-gnu/libjson-c.so.3.0.1)
by 0x4F8237D: json_tokener_parse (in /lib/x86_64-linux-gnu/libjson-c.so.3.0.1)
所以我必须这样做吗?
json_object *jobj = json_tokener_parse(...);
...
json_object_put(jobj);
【问题讨论】:
标签: json-c