如果在主程序生成一个对象指针,    CObject   *obj = new CObject;  然后可能主程序退出了,但不会同时释放对象(因为对象可能有自己的窗口),那么当对象自己的窗口关闭时,它怎么释放自己呢?调用 ~CObject 吗?

解决方案 »

  1.   

    退出程序的时候,用new生成的对象不会自动释放,用new生成的对象只有在delete时候释放。全局变量、静态变量在程序退出的时候自动释放;自动变量在函数返回的时候自动释放。主程序退出,它生成的所有窗口也会自动关闭。
      

  2.   

    在窗口关闭时,调用delete this;
      

  3.   

    new的东西需要自己释放用delete,delete调用析构函数;
    除非你用智能指针,他会自己释放
      

  4.   


      我还是说的详细点吧,大家看到 OutLook 的样式,建立新邮件时会产生新的窗口,但主窗口关闭的话新邮件窗口仍然存在。  我想搞清楚的是这个新邮件窗口是纯粹的来自一个窗口还是一个新的 CWinApp
      

  5.   

    智能指针 事实上是个类
    她在析构自己的时候,在析构函数 调用了 delete
      

  6.   

    ljan(冰魂)说得对, 在窗口关闭时,调用delete this;另外,从程序设计角度来说,不赞成这们作。
    可以用一个vector之类的东西把new出来的东西管理起来,在程序退出时一个for循环,逐个删除,最后把vector的item来全部删除。