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

相关推荐
IMPYLH6 小时前
Linux 的时间为什么会被拨回去
linux·运维·服务器
2601_963282777 小时前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
xbzb8 小时前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron
Android系统攻城狮10 小时前
Linux FFmpeg深度解析之avcodec_flush_buffers调用流程与实战(十九)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频进阶
Y38153266211 小时前
用 httpx 写 SerpBase 异步客户端:连接池与超时配置
运维·服务器·数据库
倔强的石头10611 小时前
【Linux指南】进程通信系列(七):System V 信号量 —— 同步互斥的内核原语
linux·运维·服务器
captain37614 小时前
MyBatis Plus(1)
java·服务器·mybatis
科创致远15 小时前
ESOP 电子作业指导书 WiFi 网络应用实测报告
运维·服务器·网络
重生之小比特15 小时前
【Linux系统】17 库制作与原理(下)
linux·运维·服务器
程序员清风15 小时前
AI 编程助手的权限边界:文件、命令、密钥与人工确认
运维·服务器·网络