【发布时间】:2013-08-22 14:10:14
【问题描述】:
我有以下代码,我想清理由json_object_new_string() 创建的 json 对象。
#include <json/json.h>
#include <stdio.h>
int main() {
/*Creating a json object*/
json_object * jobj = json_object_new_object();
/*Creating a json string*/
json_object *jstring = json_object_new_string("Joys of Programming");
/*Form the json object*/
json_object_object_add(jobj,"Site Name", jstring);
/*Now printing the json object*/
printf ("The json object created: %sn",json_object_to_json_string(jobj));
/* clean the json object */
json_object_put(jobj);
}
json_object_put(jobj); 行是否同时清除 jobj 和 jstring ?
或者我必须与json_object_put(jstring); 单独清理jstring?
编辑
问题2
如果jstring 以这种方式被创建到一个函数中会有什么行为?
#include <json/json.h>
#include <stdio.h>
static void my_json_add_obj(json_object *jobj, char *name, char *val) {
/*Creating a json string*/
json_object *jstring = json_object_new_string(val);
/*Form the json object*/
json_object_object_add(jobj,name, jstring);
}
int main() {
/*Creating a json object*/
json_object * jobj = json_object_new_object();
my_json_add_obj(jobj, "Site Name", "Joys of Programming")
/*Now printing the json object*/
printf ("The json object created: %sn",json_object_to_json_string(jobj));
/* clean the json object */
json_object_put(jobj);
}
jstring 在这种情况下是一个局部变量到一个函数中。 json_object_put(jobj); 是否会清理jstring(在函数my_json_add_obj() 中创建)?
【问题讨论】: