由new分配的对象一定要用delete显式销毁吗?最后在析构函数中释放内存不可以吗?
请各位前辈指点迷津

解决方案 »

  1.   

    要用delete去删除。因其是在堆上分配的,当然可以放在析构函数里。
      

  2.   

    一般来说要的. 你 delete 之后 析构函才会调用
      

  3.   

    类中的析构函数是用来完成类的清理工作的,如果在类中new了对象,那么在类退出生存域的时候,要delete这些对象。析构函数在类退出时自动调用,所以一般在函数中完成清理工作。
      

  4.   

    由new分配的对象b并不是一定要用delete显式销毁。
    但作为一种良好的编程习惯,还是用delete显式销毁的好。
    临时变量,用完就delete;成员变量在析构函数中delete。
      

  5.   

    讨论下那个内存泄漏是怎么回事 win不是自动回收资源的吗?
      

  6.   

    在析构函数里一般是释放类自身成员所分配的内存空间,如果你所分配的空间不是类的成员所有,那么你应该在合适的时候delete掉,就像上面所讲的析构函数是在类退出生存域的时候才自动调用的.
      

  7.   

    由new分配的对象一定要用delete显式销毁吗?
    是的!而且new 对应 delete  new[]对应delete[]
    最后在析构函数中释放内存不可以吗?
    可以,那也要在析构函数中显式调用delete来销毁
      

  8.   

    delete的执行过程为先调用类析构函数,再释放内存。
    所以用new分配的类对象,不要在析构里调用delete(自己想,delete会调用析构的,在析构里又调用delete,死循环哈)可以像mfc处理的一样,在类的一个成员里调用delete this,要释放对象时就调用该函数。
      

  9.   

    放在哪里不是问题,但是确实要delete
      

  10.   

    ----->handwolf(青松崖)
    由new分配的对象一定要用delete显式销毁吗?
    是的!而且new 对应 delete  new[]对应delete[]
    最后在析构函数中释放内存不可以吗?
    可以,那也要在析构函数中显式调用delete来销毁
    ===========================================================
    agree!
      

  11.   

    new 对应 delete  new[]对应delete[]
    严重同意。