c语言 - 如何清理"json_object_new_string"创建的 json 对象?



我有以下代码,我想清理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);是否同时清洁jobjjstring

或者我必须单独用json_object_put(jstring);清洁jstring

编辑

问题2

如果以这种方式将jstring creed为函数,会有什么行为?

#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);
}

在这种情况下CCD_ 8是函数中的局部变量。json_object_put(jobj);是否会清洁jstring(在函数my_json_add_obj()中创建)?

json_object_put将释放对象引用的所有内容。所以,是的,在jobj上使用该函数来释放整个对象就足够了。

相关内容

  • 没有找到相关文章

最新更新