CJSON_CLEAR 函數(shù)是一個(gè)宏定義,用于清空 cJSON 結(jié)構(gòu)體和相關(guān)內(nèi)存,其聲明如下:
cJSON_PUBLIC(void) cJSON_Delete(cJSON *item);
該函數(shù)可以有效地釋放 cJSON 結(jié)構(gòu)體和其內(nèi)部子元素所占用的內(nèi)存,以及 cJSON 重復(fù)使用時(shí)可能遺留的垃圾空間,同時(shí)也可以進(jìn)行 cJSON 重用。在使用之前,需要將 cJSON 結(jié)構(gòu)體指針作為參數(shù)傳入。如果傳入的指針不是 cJSON 類(lèi)型,或者該指針未被 malloc 調(diào)用進(jìn)行內(nèi)存分配,則會(huì)報(bào)錯(cuò)。
下面是一個(gè) CJSON_CLEAR 函數(shù)的示例:
#include "cJSON.h"
...
cJSON* root = cJSON_Parse(json_string);
if(!root) {
const char* error_ptr = cJSON_GetErrorPtr();
if (error_ptr != NULL) {
fprintf(stderr, "Error before: %s\n", error_ptr);
}
goto end;
}
// do something with root...
cJSON_Delete(root);
上面的代碼演示了在解析 JSON 字符串后如何使用 CJSON_CLEAR 函數(shù)。在使用完成 cJSON 結(jié)構(gòu)體之后,調(diào)用 cJSON_Delete 函數(shù)可以安全地清除其中的內(nèi)存。建議在程序中使用該函數(shù)避免出現(xiàn)內(nèi)存泄漏等問(wèn)題。