2013-02-14 120 views
5

我有以下代码如何释放json_object?

#include <stdio.h> 
#include <stdlib.h> 
#include <stddef.h> 
#include <string.h> 

#include <json/json.h> 

int main(int argc, char **argv) 
{ 
     json_object *new_obj; 
     char buf[] = "{ \"foo\": \"bar\", \"foo2\": \"bar2\", \"foo3\": \"bar3\" }" 
     new_obj = json_tokener_parse(buf); 
     ..... 
     json_object_put(new_obj); 
} 

是否json_object_put(new_obj)释放所有内存相关new_obj

回答

3

从文档:

void json_object_put (struct json_object *this) 

递减JSON_OBJECT的引用计数和免费的,如果它达到零

来源: http://oss.metaparadigm.com/json-c/doc/html/json__object_8h.html

+2

我知道这一点。我寻找一个确认json_object_put释放meomry的例子中我把 – MOHAMED 2013-02-14 16:59:17

+0

所以你问如何验证free'd内存实际上是free'd?这是完全不同的问题。 – djechlin 2013-02-14 17:01:33

+2

我也发现这是一个有趣的问题。函数的名字是意想不到的......我没有直观的理解,“放”意味着递减引用计数并在需要时释放。 – Kolban 2016-07-06 23:42:10

0

我们不需要免费记忆。 对于这个问题的答案,请参考this other question

+0

这并没有真正回答这个问题。请在答案中解释*为什么不会“需要释放内存”。 – 2017-01-10 12:29:10