比如new了一个CButton, 叫m_Btn, 直接delete m_Btn会报错,是不是要先release?怎么写?

解决方案 »

  1.   

    m_Btn.DestoryWindow();不过类似于这样创建的控件,会自动销毁的
      

  2.   

    需要DestoryWindow();
    MSDN上有具体说明
      

  3.   

    delete m_Btn会报什么错
    m_Btn=NULL了么?
      

  4.   


    CButton::~CButton()
    {
    DestroyWindow();
    }所以直接delete一个CButton指针并不会造成错误。真正的错误可能是在delete之后还调用了该CButton指针。
      

  5.   

    控件对象在它的生命周期结束之后,系统会自动调用该对象的析构函数,而不需要人为地调用;若是定义了一个指向对象的指针,当不再需要时要手动delete
      

  6.   

    你动态创建的是一个实例,而不是一个指针,故可以不用人工释放,程序结束给自动销毁
    只有你创建的是一个指针时,才需要人工释放
    CXXXDlg::~CXXXDlg()
    {
         if (m_pBtn != NULL)
           {
              delete m_pBtn;
              m_pBtn = NULL;
           }
    }
      

  7.   

    m_Btn.DestoryWindow();
    delete m_pBtn;注意顺序
      

  8.   

    m_Btn.DestoryWindow();
    delete m_pBtn;注意顺序