マイクロソフトのサポート通りSDIで複数のビューを切り替える
アプリケーションを作成しました。
ftp://ftp.microsoft.com/softlib/mslfiles/VSWAP32.EXE
アプリケーションクラスのInitInstanceにて複数ビューのメモリを
確保(new)しているのですがdeleteの記載は見当たりません。
// Keep array of views as member of WinApp
CView* pActiveView = ((CFrameWnd*) m_pMainWnd)->GetActiveView();
m_pViews[0] = pActiveView;
m_pViews[1] = (CView*) new CForm2; //複数のビューメモリ確保
m_pViews[2] = (CView*) new CVswapView; //複数のビューメモリ確保
実際アプリケーションを開始し通常の終了処理をおこなうと
メモリリークは起こらず、自動的にメモリ解放されているように伺えます。
と、ここまでは問題はないのですが複数ビューからアプリケーション全体を
終了しようとするとメモリリークが起こってしまいます。
終了には以下の方法を取っています。
pApp = (CApp*)AfxGetApp();
pApp ->m_pMainWnd->PostMessage( WM_QUIT, NULL, NULL );
何か、良い方法があればどなたかご教授いただけたら幸いです。
pApp ->m_pMainWnd->PostMessage(WM_CLOSE);
ではいかがでしょう。
ご指摘どおりにしたら直りました。
dairygoodsさんどうもありがとうございました。
::AfxGetMainWnd()->PostMessage (WM_COMMAND, ID_APP_EXIT);
の方がMFC的かな?