在MenuDlg窗口中,打开Dlg1:
void CMenuDlg::OnBnClickedBtndlg1()
{
CDlg1* dlg = new CDlg1(this);
dlg->Create(DLG1,this);
dlg->ShowWindow(SW_SHOW);
}
然后在Dlg1中退出按钮代码中:
void CDlg1::OnBnClickedExit()
{
DestroyWindow();
}
重载PostNcDestroy:
void CDlg1::PostNcDestroy()
{
CDialog::PostNcDestroy();
delete this;
}
发现窗口是关闭了,PostNcDestroy()也执行了,但是占用的内存并没有释放,退出程序,内存可以释放掉。
怎样才能把占用的内存释放掉呢?
void CMenuDlg::OnBnClickedBtndlg1()
{
CDlg1* dlg = new CDlg1(this);
dlg->Create(DLG1,this);
dlg->ShowWindow(SW_SHOW);
}
然后在Dlg1中退出按钮代码中:
void CDlg1::OnBnClickedExit()
{
DestroyWindow();
}
重载PostNcDestroy:
void CDlg1::PostNcDestroy()
{
CDialog::PostNcDestroy();
delete this;
}
发现窗口是关闭了,PostNcDestroy()也执行了,但是占用的内存并没有释放,退出程序,内存可以释放掉。
怎样才能把占用的内存释放掉呢?
dlg->Create(DLG1,this);
dlg->ShowWindow(SW_SHOW);
delete dlg;void CDlg1::OnBnClickedExit()
{
// DestroyWindow();
}
重载PostNcDestroy:
void CDlg1::PostNcDestroy()
{
CDialog::PostNcDestroy();
//delete this;
} 再试试
{
CDialog::PostNcDestroy();
delete this;
AfxMessageBox("test");
} 如果弹出messagebox,那么delete执行了,内存应该释放了。
不然如果人家不是按按钮,而是按的右上角的X关闭就有内存泄露了