关于free的问题

asdk77 2012-11-15 09:25:14
在函数A中malloc一段内存保存内容,用指针返回这段内容供另一函数B使用,之后应该如何释放这段内存呢? 是在B中设一指针,然后指向这段内存,再释放吗?

func A()
{
*p = ()malloc();
....
return p;
}

func B()
{
...
*temp = func A();
free(temp);

}

是这样吗? 有点迷惑,望高手指教!
...全文
187 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cp298674954 2012-11-15
  • 打赏
  • 举报
回复
指针只是栈上的一个机器字的地址值而已 方法结束 指针出栈 内存释放
meiyoushenmede 2012-11-15
  • 打赏
  • 举报
回复
哦哦,懂了。。
叁叁玖玖 2012-11-15
  • 打赏
  • 举报
回复
LZ 的做法是正确的. func A()返回的是 一个地址 然后将使指针temp指向该地址*temp = func A(); 最后free(temp),也就是释放的该地址的内存
meiyoushenmede 2012-11-15
  • 打赏
  • 举报
回复
新手,说错勿怪貌似,*与*temp交换的是值,不是地址吧,释放了*temp,*p应该还占用内存吧!
whizer 2012-11-15
  • 打赏
  • 举报
回复
你这样是对的,原则上只要在进程退出之前把所有申请的内存释放掉就可以了.但是一般是只要申请的内存不再使用就应该马上释放掉,免得不必要的麻烦.
转角天边 2012-11-15
  • 打赏
  • 举报
回复
可以,free是告诉操作系统temp所指向的内存被回收
breakfisher 2012-11-15
  • 打赏
  • 举报
回复
ok,你的代码是对的
沐寒握冰 2012-11-15
  • 打赏
  • 举报
回复
看看回复,我也学习了,
lin5161678 2012-11-15
  • 打赏
  • 举报
回复
free(malloc(XXX));
delong45 2012-11-15
  • 打赏
  • 举报
回复
对的,malloc配置成功后会返回一个指针,即地址,LZ用指针temp接收这一地址,然后根据这地址释放内存空间。 相当于*p = malloc(10); ....... free(p);
tonystack0804 2012-11-15
  • 打赏
  • 举报
回复
学习学习~
ldxab 2012-11-15
  • 打赏
  • 举报
回复
写的对,返回指针释放指针指向的控件就对了
gaochizhen33 2012-11-15
  • 打赏
  • 举报
回复

func A()
{
    int *p = NULL;
    p = (int *)malloc(100);
    ....
    return p;
}

func B()
{
    int *temp = NULL;
    temp = func A();
    free(temp);
}

这样更规范些。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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