• cJson堆内存释放问题


    cJSON_Delete(),是用来释放json对象的,释放父JSON对象后,子JSON对象也会被释放。
    CJSON_free(),是用来释放其他对象的。

    int main(void)
    {
        cJSON* cjson_test = NULL;
        cJSON* cjson_address = NULL;
        cJSON* cjson_skill = NULL;
        char* str = NULL;
    
        /* 创建一个JSON数据对象(链表头结点) */
        cjson_test = cJSON_CreateObject();
    
        /* 添加一条字符串类型的JSON数据(添加一个链表节点) */
        cJSON_AddStringToObject(cjson_test, "name", "mculover666");
    
        /* 添加一条整数类型的JSON数据(添加一个链表节点) */
        cJSON_AddNumberToObject(cjson_test, "age", 22);
    
        /* 添加一条浮点类型的JSON数据(添加一个链表节点) */
        cJSON_AddNumberToObject(cjson_test, "weight", 55.5);
    
        /* 添加一个嵌套的JSON数据(添加一个链表节点) */
        cjson_address = cJSON_CreateObject();
        cJSON_AddStringToObject(cjson_address, "country", "China");
        cJSON_AddNumberToObject(cjson_address, "zip-code", 111111);
        cJSON_AddItemToObject(cjson_test, "address", cjson_address);
    
        /* 添加一个数组类型的JSON数据(添加一个链表节点) */
        cjson_skill = cJSON_CreateArray();
        cJSON_AddItemToArray(cjson_skill, cJSON_CreateString("C"));
        cJSON_AddItemToArray(cjson_skill, cJSON_CreateString("Java"));
        cJSON_AddItemToArray(cjson_skill, cJSON_CreateString("Python"));
        cJSON_AddItemToObject(cjson_test, "skill", cjson_skill);
    
        /* 添加一个值为 False 的布尔类型的JSON数据(添加一个链表节点) */
        cJSON_AddFalseToObject(cjson_test, "student");
    
        /* 打印JSON对象(整条链表)的所有数据 */
        str = cJSON_Print(cjson_test);
        printf("%s\n", str);
        cJSON_Delete(cjson_test);
        cJSON_free(str);
        system("pause");
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  • 相关阅读:
    【LeetCode刷题日志】622.设计循环队列
    自动删除大文件日志、过期日志
    MySQL锁机制
    springboot+html实现简单注册登录
    python 报错 module ‘asyncio‘ has no attribute ‘run‘
    Qt QPixmap旋转图像
    信息论学习笔记(一):认识通信系统
    判断点是否在点组成的封闭区域内c++
    2530. 执行 K 次操作后的最大分数
    [2022-11-07]神经网络与深度学习第4章 - 卷积神经网络(part 5)
  • 原文地址:https://blog.csdn.net/lljss1980/article/details/133798934