c语言中,将要释放的指针作为参数传递后,取址载传入另一个函数,再释放有问题吗?

六碗铁biu_ 2017-10-18 02:19:49
假设CJSON* a已申请内存,
调用release(a);
void release(CJSON* p)
{
fun(&p);

}
void fun(CJSON** x)
{
if(NULL != *x)
{
cJSON_Delete(*ppData);
*x = NULL;
}
}
此时释放的是否还是有想要释放的a所占用空间?
...全文
359 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2017-10-18
  • 打赏
  • 举报
回复
没看出来这么做的必要性 但是这么释放肯定是可以的
自信男孩 2017-10-18
  • 打赏
  • 举报
回复
你的代码看不出你要表达的逻辑; 申请空间就要释放,不需要去释放同一指针,但是要保留申请时空间的首地址。
老马何以识途 2017-10-18
  • 打赏
  • 举报
回复
代码很乱啊,ppData是什么?cJSON_Delete就是释放内存的函数吗?如果ppData就是x,应该没问题。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧