free的问题
时间:2011-12-06
来源:互联网
C/C++ code
为什么调用free时报错呢??
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语句那个判断没用
free前先判断下if(d->renderCallback[i]),你的for语句那个判断没用
++
根本就没判断d->renderCallback[i]的值
作者: gaochizhen33 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28