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

相关推荐
电商API&Tina7 分钟前
1688 拍立淘接口(item_search_img)测试与接入实战心得
java·大数据·前端·物联网·oracle·json
默|笙32 分钟前
【Linux】线程互斥与同步_同步(2)_环形队列
linux·运维·服务器
北京耐用通信41 分钟前
工业通信升级:耐达讯自动化CAN转EtherCAT网关的高效落地方案
服务器·人工智能·科技·物联网·自动化·信息与通信
Wenweno0o1 小时前
CC-Switch & Claude 基于 Linux 服务器安装使用指南
linux·服务器·claude code·cc-switch
志栋智能1 小时前
当巡检遇上超自动化:一场运维质量的系统性升级
运维·服务器·网络·数据库·人工智能·机器学习·自动化
星辰徐哥1 小时前
CDN工作原理:节点缓存、智能调度,减少跨网传输延迟
服务器·缓存·php
Fanfanaas1 小时前
Linux 系统编程 进程篇(一)
linux·运维·服务器·c语言·开发语言·网络·学习
念恒123061 小时前
ROS2入门
linux·运维·服务器
.select.2 小时前
TCP 8 (拥塞控制)
服务器·网络·tcp/ip
小糖学代码2 小时前
LLM系列:1.python入门:6.元组型对象(tuple)
linux·运维·服务器·python