郁闷,非模式对话框销毁总是报错解决思路

郁闷,非模式对话框销毁总是报错
创建:
if(m_pErrDispDlg==NULL) {
  m_pErrDispDlg=new CErrorDispDlg(this);
  m_pErrDispDlg->Create(IDD_DIALOG_ERROR_DISPLAY,NULL);
  m_pErrDispDlg->GetWindowRect(DlgRect);
  m_pErrDispDlg->SetWindowPos(NULL,ClientRect.left+10,ClientRect.top+65,DlgRect.Width(),DlgRect.Height(),SWP_SHOWWINDOW);
}

关闭:
void CErrorDispDlg::OnCancel() 
{
if(MessageBox("确认要关闭错误显示窗口?","请确认",MB_OKCANCEL)!=IDOK) return;
DestroyWindow();
CDialog::OnCancel();
}

void CErrorDispDlg::PostNcDestroy() 
{
// for(int i=0;i<2;i++){
// m_ErrCogRects[i]->RemoveAll();
// delete m_ErrCogRects[i];
// }
delete this;
CDialog::PostNcDestroy();
}

执行关闭时,总是会报内存访问错误,怎么回事呢?

------解决方案--------------------
delete this当然会错了
------解决方案--------------------
delete this;肯定是有问题的。
应该放在外面在需要释放的时候 delete m_pErrDispDlg;
然后,印象里面在调用DestroyWindow之后OnCancel是不需要的。


------解决方案--------------------
查查是不是哪个指针已经释放过了,结果在退出的时候又释放了一次?