+ -
当前位置:首页 → 问答吧 → NEW一个对象后,在哪里释放!

NEW一个对象后,在哪里释放!

时间:2011-12-03

来源:互联网


我是一个树控件,双击上面的一个ITEM的时候,在OnDblclkTree()函数中CTalkDialog *pDlg=new CTalkDialog  NEW了一个对话框变量出来!


代码:
C/C++ code


CTalkDialog *pDlg=new CTalkDialog(m_FileORTextSOCK,m_SockAddr);  
        pDlg->Create(IDD_DIALOG1,this);
        pDlg->ShowWindow(SW_SHOW);


请问 ,我在哪里释放这个变量呢?   我想当点击关闭按钮后者取消按钮的时候释放,怎么做?   

作者: qweewqpkn2009   发布时间: 2011-12-03

如果可以的话,你new的这个CTalkDialog作为this的一个成员,比如m_pTalkDlg,需要的时候检查不为空则new并Create,点关闭的时候可以不管它,但this窗口销毁的时候,在this的析构或OnDestroy里删除这个成员m_pTalkDlg;

如果不作为成员的话,你试着在重载CTalkDialog的虚函数PostNcDestroy里加入一句delete this,当窗口关闭后删除自己,就像MFC类CView的做法一样。

作者: dream0411   发布时间: 2011-12-03

在CTalkDialog中重载PostNcDestroy()释放这个变量,在点击“关闭”按钮退出后就自动调用这个函数void CTalkDialog::PostNcDestroy()
{
  delete this;//释放变量
  CDialog::PostNcDestroy();
}

作者: jixiang1983   发布时间: 2011-12-03