首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

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

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

热点排行