免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1593 | 回复: 4
打印 上一主题 下一主题

想问一个c++中资源回收的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-13 16:14 |只看该作者 |倒序浏览
通过返回值
如:char* func()
{
      char *temp = new char[5];
      strcpy(temp, "test");
      return temp;
}

char *me=func();即可  


请问题像这个函数中,为了把字符串信息返回给主函数,所以new了资源,

这像这样的资源,我们如何回收呢?

论坛徽章:
0
2 [报告]
发表于 2009-08-13 20:57 |只看该作者
在外面回收啊,堆上的内存是唯一的,外面一样的可以delete.

论坛徽章:
0
3 [报告]
发表于 2009-08-14 01:22 |只看该作者
这里应该是自动释放的,都是临时的

论坛徽章:
0
4 [报告]
发表于 2009-08-15 09:34 |只看该作者
temp指针占用的内存在栈上,函数退出时,自动释放了。

但是 temp指针所指的内存在堆上,函数外面还可以继续访问,也可以delete。

论坛徽章:
0
5 [报告]
发表于 2009-08-15 16:26 |只看该作者
temp变量是临时的,是在栈上的 但是它分配的内存是在堆上的
函数退出变量释放了,可是分配内存没释放
地址传出去了到了主函数里,所以在主函数根据地址delete下就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP