请教: 我在一个SDI程序的CMainFrame中:
CView* pViewNewAdd = new CMyOwnView; //CMyOwnView is CListView
//or CFormView,etc;
pViewNewAdd->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,rectDefault,
this,AFX_IDW_PANE_FIRST+dstViewId,NULL); pDoc->AddView(pViewNewAdd);
pDoc->RemoveView(pViewOld);
...... 该new出来的指针我需要保存到MainFrame结束,
可结束时我无论在哪里delete之都出错,而我不delete之却没有报告内存泄漏。
该指针应该如何正确释放?
CView* pViewNewAdd = new CMyOwnView; //CMyOwnView is CListView
//or CFormView,etc;
pViewNewAdd->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,rectDefault,
this,AFX_IDW_PANE_FIRST+dstViewId,NULL); pDoc->AddView(pViewNewAdd);
pDoc->RemoveView(pViewOld);
...... 该new出来的指针我需要保存到MainFrame结束,
可结束时我无论在哪里delete之都出错,而我不delete之却没有报告内存泄漏。
该指针应该如何正确释放?
delete this;
所以,当你的view窗口destroy之后(这里说的是window窗口的destroy,你的C++对象并不有因此而销毁),C++被销毁.这就是你不用在其他地方显示的delete的原因.简言之,如果一个CWnd的派生类重载了PostNcDestroy(),并且在其中加了一句: delete this;
那么这个CWnd对象就不再需要你delete了,否则,你要保存该对象的指针,在适当时候delete它.