有这样一个 函数
struc1 *  s()
{  struc1 * a;
  a= new  struc; //分配内存
 
 ............... return a ;    //函数返回a
 }
不能在return前销毁指针吧,
在return后销毁也无效,请问在哪里销毁指针呢?c++能自动销毁吧

解决方案 »

  1.   

    strucl *p = s();
    对p进行处理.
    处理完
    delete p;
      

  2.   

    c++不会自动销毁,可以在return之后delete这个指针,在任何时候delete都可以。不过return之后delete容易出错。
      

  3.   

    edrftgyh(老胡) 的说法是错误的。
    因为a 是在堆里面分配的内存,它有和进程一样的生存期,因此,返回的指针是有效的。
    同意 he_zhidan(何志丹:壮志在我心) 的意见。
      

  4.   

    你定义的指针a只是一个临时变量,这个函数调用完后就释放了
    ========================================
    a被释放
    但指针a指向的内容没有被释放