实际项目中发现Json-C用法不当导致的内存泄露、踩内存问题,大都是因为不清楚下面几个接口的用法。
以下分析基于https://github.com/json-c/json-c( 0.12.1 release)。
1. json_object_new_object生成的对象要不要释放
int main(int argc, char **argv)
{
struct json_object* obj;
mtrace();
obj = json_object_new_object();
//json_object_put(obj);
return 0;
}
上面的代码执行后,你会发现泄漏下面这些内存:
Memory not freed:
-----------------
Address Size Caller
0x0000000000b6a460 0x48 at json-c-json-c-0.12.1-20160607/json_object.c:185
0x0000000000b6a4b0 0x58 at json-c-json-c-0.12.1-20160607/linkhash.c:435
0x0000000000b6a510 0x200 at json-c-json-c-0.12.1-