+ -
当前位置:首页 → 问答吧 → free的问题

free的问题

时间:2011-12-06

来源:互联网

C/C++ code


         VideoRenderCallback** renderCallback;
         d->renderCount=1; 
         d->renderCallback = (VideoRenderCallback**)malloc(sizeof(VideoRenderCallback*)*d->renderCount);
         for (int i=0;i<d->renderCount;i++)
    {
        d->renderCallback[i] = (VideoRenderCallback*)malloc(sizeof(VideoRenderCallback));
    }


         for (int i=0;i<d->renderCount && d->renderCallback;i++)
    {
        free(d->renderCallback[i]);//[color=#FF0000]调用时会报错[/color]
        d->renderCallback[i]=NULL;
    }
         if (d->renderCallback)
    {
        free(d->renderCallback);//这个不会报错
        d->renderCallback=NULL;
    }



为什么调用free时报错呢??

作者: YUKUILONGQQ   发布时间: 2011-12-06

你怎么malloc的,就怎么free啊,也要循环来free的

作者: zhaghi   发布时间: 2011-12-06

free前先判断下if(d->renderCallback[i]),你的for语句那个判断没用

作者: walkersfaint   发布时间: 2011-12-06

逻辑上没看出问题,可能程序中途修改了d->renderCallback的值。

作者: lengxujun   发布时间: 2011-12-06

还有可能就是d->renderCallback[i]的值被中途修改。

作者: lengxujun   发布时间: 2011-12-06

引用 2 楼 walkersfaint 的回复:
free前先判断下if(d->renderCallback[i]),你的for语句那个判断没用

++
根本就没判断d->renderCallback[i]的值

作者: gaochizhen33   发布时间: 2011-12-06