cjson内存泄漏问题注意事项

(1)使用root = cJSON_Parse(text);

//将字符串转成json格式,函数中申请了一块内存给root 所以在最后要释放root

cJSON_Delete(root ); //释放cJSON_Parse()分配出来的内存空间

(2)使用out = cJSON_Print(root);(含有cJSON_PrintUnformatted函数)

//函数将json数据转成字符串,这个函数内申请了一段内存给out,所以使用完out后也要释放

由于out不是json指针的数据格式,使用cJSON_free(out);释放即可

(3)使用cJSON new_json_str = cJSON_Create*(str);

//将一个字符串转成一个json对象,函数里面也涉及了内存分配,用完以后也要释放cJSON_Delete(new_json_str );

若cJSON new_json = cJSON_Create*(str)创建后,通过cJSON_AddItemToObject( json, "test", new_json );(或者cJSON_AddItemToArray),加入到数组或者object中,不需要单独释放new_json ,删除json时被添加的item(此处为申请的new_json)同时也会被删除。

注意:cJSON_Delete( ) ,cJSON_free ( ) 要区分使用,json格式的使用cJSON_Delete ,指针格式使用cJSON_free,对应关系如下:

申请内存: cJSON_Parse cJSON_Create cJSON_Print
释放内存: cJSON_Delete cJSON_Delete cJSON_free
Referenced from:cjson内存泄漏问题注意事项-CSDN博客

相关推荐
广州灵眸科技有限公司12 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) Linux虚拟机准备
linux·运维·服务器
Lana学习中12 小时前
【运维杂记】连接不上远程服务器的问题处理
运维·服务器
1892280486113 小时前
NV023固态MT29F16T08GWLCEJ9-QBES:C
大数据·服务器·人工智能·科技·缓存
LZZ and MYY15 小时前
RTS 在windows和Linux之间ShareMem
linux·运维·服务器
爱学习的徐徐15 小时前
Linux 基础IO
linux·服务器
蛋蛋的学习记录15 小时前
C#窗体应用中使用EasyModbusCore通讯
服务器·c#·tcp
zt1985q15 小时前
本地部署源代码管理解决方案 Bitbucket Data Center 并实现外部访问
运维·服务器·数据库·网络协议·postgresql·源代码管理
禹凕15 小时前
Linux基础——环境
linux·运维·服务器·ubuntu
TheRouter16 小时前
LLM 流式输出工程实践:SSE、背压、断流重连与JSON 流解析的 6 个生产陷阱
人工智能·json
糖果店的幽灵17 小时前
Claude Code 完全实战指南 - 第四章:Skill 怎么写
java·服务器·前端