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博客

相关推荐
cui_ruicheng14 小时前
Linux进程控制(下):实现简易 Shell 命令行解释器
linux·运维·服务器
Smile_25422041814 小时前
clickhouse日志疯涨问题
linux·运维·服务器·clickhouse
2301_旺仔14 小时前
【Nginx进程管理】
linux·服务器·网络
SPC的存折14 小时前
(自用)LNMP-Redis-Discuz5.0部署指南-openEuler24.03-测试环境
linux·运维·服务器·数据库·redis·缓存
云飞云共享云桌面15 小时前
共享云主机告别传统电脑——制造工厂研发部门2台三维设计云主共享给20个设计师并发用
大数据·运维·服务器·自动化·电脑·制造
航Hang*15 小时前
Windows Server 配置与管理——第10章:配置FTP服务器
运维·服务器·网络·windows·学习·vmware
小夏子_riotous15 小时前
Docker学习路径——1、简介
linux·运维·服务器·docker·容器·云计算
航Hang*15 小时前
Windows Server 配置与管理——第9章:配置DHCP服务器
运维·服务器·windows·学习
Amelio_Ming15 小时前
linux内存管理-页面回收之LRU链表
linux·服务器
子歌的宏定义15 小时前
主机vscode远程链接服务器开发方法
服务器·ide·vscode