如下显示了一个无模式的对话框CPathEdit:
void MyDialog::OnClick() 
{
//pDialog initialized to NULL in the constructor of CMyWnd class
CPathEdit* pDialog = new CPathEdit();
//Check if new succeeded and we got a valid pointer to a dialog object
if(pDialog != NULL)
{
BOOL ret = pDialog->Create(IDD_DAQ_PATH_EDIT,this);
if(!ret)   //Create failed.
AfxMessageBox("Error creating Path Edit Dialog");
pDialog->ShowWindow(SW_SHOW);
}
else
AfxMessageBox("Error Creating Path Edit Dialog Object");
}请问我如何用delete 释放内存呢?需不需要呀??

解决方案 »

  1.   

    当然需要pDialog->DestoryWindow();
    delete pDialog;
      

  2.   

    CPathEdit* pDialog弄成类成员变量
      

  3.   

    可是我要是OnClick()方法执行了很多次呢?pDialog是不是只指向最后一个,那么前面的是不是泄漏了呢?可以这样吗::
    void CYourView::OnOpenDlg(void)
    {
    /*假设IDD_TEST_DLG为已经定义的对话框资源的ID号*/
    CTestDlg *dlg=new CTestDlg;
    dlg->Create(IDD_TEST_DLG,NULL);
    dlg->ShowWindows(SW_SHOW);
    /*不要调用 delete dlg;*/
    }void CTestDlg1::OnDestroy() 
    {
    CDialog::OnDestroy();
    delete this;
    }这样OnOpenDlg()不管执行多少次都没有关系了。这是从网上看到的,不知安全乎?
      

  4.   

    方法是可以, 但不应该重载 OnDestory函数, 应该是PostNcDestroy
      

  5.   

    void CTestDlg1::OnPostNcDestroy() 
    {
    CDialog::OnPostNcDestroy();
    delete this;
    }