搜索
bottom↓
回复: 3

麻烦各位解决下个内存泄漏问题

[复制链接]

出0入0汤圆

发表于 2012-2-26 15:25:58 | 显示全部楼层 |阅读模式

(原文件名:PJG1JT`6Z9~DC%[OAJIC~{F.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981

出0入0汤圆

 楼主| 发表于 2012-2-26 15:31:49 | 显示全部楼层
/* The cJSON structure: */
typedef struct cJSON {
        struct cJSON *next,*prev;        /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
        struct cJSON *child;                /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */

        int type;                                        /* The type of the item, as above. */

        char *valuestring;                        /* The item's string, if type==cJSON_String */
        int valueint;                                /* The item's number, if type==cJSON_Number */
        double valuedouble;                        /* The item's number, if type==cJSON_Number */

        char *string;                                /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
} cJSON;


static void *(*cJSON_malloc)(rt_size_t sz) = rt_malloc;
static void (*cJSON_free)(void *ptr) = rt_free;
/* Internal constructor. */
static cJSON *cJSON_New_Item()
{
        cJSON* node = (cJSON*)cJSON_malloc(sizeof(cJSON));
        if (node) memset(node,0,sizeof(cJSON));
        return node;
}

/* Delete a cJSON structure. */
void cJSON_Delete(cJSON *c)
{
        cJSON *next;
        while (c)
        {
                next=c->next;
                if (!(c->type&cJSON_IsReference) && c->child) cJSON_Delete(c->child);

                if (!(c->type&cJSON_IsReference) && c->valuestring) cJSON_free(c->valuestring);
                if (c->string) cJSON_free(c->string);
                cJSON_free(c);
                c=next;
        }
}

出0入0汤圆

 楼主| 发表于 2012-2-26 15:35:41 | 显示全部楼层
就是 一个任务。 申请内存,使用内存,然后删除内存。但是删除的不是很完全。请教高手提一个删除JSON 结构体 内存的方法

出0入198汤圆

发表于 2014-8-2 10:01:45 | 显示全部楼层
dpjkflyq 发表于 2012-2-26 15:35
就是 一个任务。 申请内存,使用内存,然后删除内存。但是删除的不是很完全。请教高手提一个删除JSON 结构 ...

源码是没有问题的,在使用cJSON_PrintUnformatted及cJSON_Print之后,一定要将其返回的对象进行free,因为print的过程中会开辟内存,我的也是这个问题。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-1 18:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表