Chinaunix

标题: 想问一个c++中资源回收的问题 [打印本页]

作者: newman0708    时间: 2009-08-13 16:14
标题: 想问一个c++中资源回收的问题
通过返回值
如:char* func()
{
      char *temp = new char[5];
      strcpy(temp, "test");
      return temp;
}

char *me=func();即可  


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

这像这样的资源,我们如何回收呢?
作者: xinxin12375    时间: 2009-08-13 20:57
在外面回收啊,堆上的内存是唯一的,外面一样的可以delete.
作者: aaaaa5aa    时间: 2009-08-14 01:22
这里应该是自动释放的,都是临时的
作者: river617    时间: 2009-08-15 09:34
temp指针占用的内存在栈上,函数退出时,自动释放了。

但是 temp指针所指的内存在堆上,函数外面还可以继续访问,也可以delete。
作者: superbtl    时间: 2009-08-15 16:26
temp变量是临时的,是在栈上的 但是它分配的内存是在堆上的
函数退出变量释放了,可是分配内存没释放
地址传出去了到了主函数里,所以在主函数根据地址delete下就可以了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2