请问用new开辟了内存空间后,如果后来不用delete,就一定会造成内存泄露吗?

解决方案 »

  1.   

    是滴!
    非托管环境是这样滴,
    如果是托管环境可以不需要显式的释放内存,Framework会处理的。
      

  2.   

    // self destruction
    void CView::PostNcDestroy()
    {
    // default for views is to allocate them on the heap
    //  the default post-cleanup is to 'delete this'.
    //  never explicitly call 'delete' on a view
    delete this;
    }
    有次,我的controlBar里放了CView派生类对象,要不得,不得不换成了指针,用new创建,然而却不能用delete。
      

  3.   

    会泄露的
    new-delete
    malloc-free
    GetBuffer-ReleaseBuffer
      

  4.   

    分配内存后如果不释放,就会造成内存泄露。不过,由于new是在进程的堆上分配空间,在你的程序正常退出后会自动释放new分配的内存。
      

  5.   

    //  the default post-cleanup is to 'delete this'.
    //  never explicitly call 'delete' on a view也不是很能看的懂,主要是为什么?
    它想说的意思无非就是外界或者自己内部不要delete这个view的指针hWnd,即使你获得了.
    而是要通过view的成员函数来执行 delete this,来delete才可以.
    那如果你想delete一个view ,调用它的PostNcDestroy()方法就可以了.它自己delete.
    (如果这个view 是你自己new 的,但不调用delete,心理肯定会有不爽的感觉,因为自己写的代码的new 和delete没配对,呵呵).至于为什么外界不能delete,只能由它的成员函数来执行delete this.就不知道了.MFC在这里想表明什么,我也没看懂.估计框架原因 约束的吧.
      

  6.   

    请问什么叫托管环境呢?.net的东西.new 了没delete 就是传说中的内存泄露 方式之一.堆上不用的数据都要手动释放的.
      

  7.   


    new 和delete配对 // 原则..!
    ----------
    指针、内存管理问题能说自己很精通的该不多..