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

相关推荐
ZJH__GO1 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
小小、码农2 小时前
Linux进程控制:从fork到exec,手写一个简易Shell
linux·运维·服务器
不会就选b2 小时前
Linux之进程间通信(二)---模拟进程池
linux·运维·服务器
NeilYuen3 小时前
用UDP实现向DNS服务器请求IP地址
服务器·tcp/ip·udp
沫璃染墨4 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++
AIgorithmGEEK5 小时前
Linux 环境变量完全指南:从入门到理解底层原理
linux·运维·服务器
迪康Defender5 小时前
从静态存储到动态流转:终端透明加密两种模式实战解析
运维·服务器·网络·数据库·其他
酷可达拉斯5 小时前
Linux操作系统-升级OpenSSH修复漏洞
linux·运维·服务器·云计算
振浩微433射频芯片5 小时前
用TU2303B双向无线模块打通标准化智能家居接入:433MHz方案的落地优势指南
服务器·网络·人工智能
Molesidy6 小时前
【Linux】基于busybox的根文件系统的完善
linux·服务器·嵌入式linux