• 在STM32F103环境下,cJSON占用RAM约4kB,堆空间需调整至0X500起
Heap_Size       EQU     0x00000500
  • 使用cJSON_Parse创建一个 cJSON指针后,用完务必 使用 cJSON_Delete函数释放 该cJSON指针。
cJSON_Parse(cjson_root);
/*user code*/
cJSON_Delete(cjson_root);
  • 使用cJSON_Createxxx函数创建 json对象后, 用完务必使用 cJSON_Delete函数释放 该cJSON指针。
cJSON *cjson_root = cJSON_CreateObject();
/*user code*/
cJSON_Delete(cjson_root);
  • 使用 cJSON_Print函数 将cJSON数据 解析成 char 字符串后,务必使用 cJSON_free函数释放 该char指针(注意不是cJSON指针),这个 细节隐藏的很深,因为cJSON_Print 函数不光是 print打印,他会 调用cJSON_malloc 申请内存,所以用完 必须要释放 掉 该char 指针。
///正确示例
char *str;
cJSON *cjson_root = cJSON_CreateObject();
/*user code*/
str = cJSON_Print(cjson_root);
/*user code*/
cJSON_Delete(cjson_root);
cJSON_free(str);


///错误示例
char *str;
cJSON *cjson_root = cJSON_CreateObject();
/*user code*/
str = cJSON_Print(cjson_root);
/*user code*/
cJSON_Delete(cjson_root);
cJSON_free(cjson_root);