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

关于局部函数中的new?定义一个函数constvector int*seq(intsize){vector intelemfor(inti0isizei

关于局部函数中的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申请的内存空间在函数调用完后不会被收回吗?

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