CJSON中的内存释放


CJSON中的内存释放

CJSON是我比较喜欢和常用的JSON解析库,但没注意的话容易内存泄露,主要因为它有两个释放内存的函数:cJSON_freecJSON_Delete

其中cJSON_free是用于释放cJSON_PrintcJSON_PrintUnformatted的内存的,也就是说,如果你代码里有用到cJSON_Print或者cJSON_PrintUnformatted,就得通过cJSON_free来释放内存:

char *json_string = cJSON_Print(item);
if (json_string != NULL) {
    cJSON_free(json_string);
}

此外,cJSON_Delete用于释放cJSON_Parse或者cJSON_CreateObject所创建出来对象:

cJSON *json=cJSON_CreateObject();
cJSON_Delete(json);