在函数体内用malloc分配了内存但并未用free,请问是在函数调用完成后释放呢,还是程序完成后释放?

visc 2003-05-28 02:35:19
如果
int * test()
{
int *a;
a = malloc(sizeof(int));
*a = 5;
return a;
}

那么在其它程序段中调用此函数是安全的吗?

例如
int *a=test();

...全文
139 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kicool 2003-05-28
  • 打赏
  • 举报
回复
的确如此。
pzytony 2003-05-28
  • 打赏
  • 举报
回复
建议使用c++,new和free的过程放到
构造和析构函数中完成
pzytony 2003-05-28
  • 打赏
  • 举报
回复
直到关机内存才会释放!!!
arfi 2003-05-28
  • 打赏
  • 举报
回复
malloc一次,便要free一次,做个循环释放就行了。
如果你不想对再使用先前申请的内存,随时可以释放,释放后就不可用了。
visc 2003-05-28
  • 打赏
  • 举报
回复
谢谢,那么如果我创建一个链表,每个节点都是通过malloc分配存储,那么释放时是否要一一释放链表中的每个节点的存储呢?
....
free(m->next->next)
free(m->next)
free(m)

?
kicool 2003-05-28
  • 打赏
  • 举报
回复
不安全,有内存泄漏!函数结束并不会释放malloc的内存,即便程序结束也不会。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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