读书人

关于局部函数中的new?该怎么处理

发布时间: 2012-03-19 22:03:04 作者: rapoo

关于局部函数中的new?
定义一个函数
const vector <int> * seq(int size)
{
vector <int> elem ;
for(int i = 0 ; i < size ; i ++)
{
elem[i] = i ;
}

return &elem ;
}
如果象上面这样定义函数,那么在函数调用返回后elem所在的内存空间已经被系统收回,会有错误,但是如果改成下面这样:
const vector <int> * seq(int size)
{
vector <int> *elem = new vector <int> ;
for(int i = 0 ; i < size ; i ++)
{
(*elem)[i] = i ;
}

return elem ;
}
这样就不会有错了, 难道用new申请的内存空间在函数调用完后不会被收回吗?

[解决办法]
是的。
堆和栈的区别,是基本知识了。你最好再认真看看书。

读书人网 >C++

热点推荐