- 923 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 07:18:54 ]
- >>919
void CtimerDlg::OnBnClickedButton2() { // new msgdlg() → msgdlgのインスタンスをヒープに確保。 // // msgdlg aaae = ... → msgdlgのインスタンスをスタックに確保して、 // msgdlg(msgdlg* ptr)に適合するコンストラクタで初期化。(※1) msgdlg aaae = new msgdlg(); ... // 自動変数のaaaeがスコープから外れるのでデストラクタが呼ばれ、 // aaaaが保持していたウィンドウなどが削除される。 // // (※1)のポインタptrをdeleteしていなければメモリリーク。 } が理解出来ていないように見える。 作りたいのがモーダルダイアログなら、 { msgdlg aaae; aaae.Create(IDD_DIALOG1, this); aaaa.DoModal(); } 関数を抜けてもmsgdlgを保持するなら、 グローバルでなくCtimerDlgのメンバにする。
|

|