销毁非模态窗体产生的4K内存泄露问题
最近做程序需要用到动态创建和销毁非模态窗体,于是我做了下面的极限测试
while(1)
{
dlg=new CDlgEx();
dlg->Create(IDD_DIALOG1);
dlg->ShowWindow(SW_SHOW);
delete dlg;
}
但是发现会产生4K步长的内存泄露,后来查资料,看一朋友说CWND继承的对象,如果外部销毁会有4K的内存泄露,于是按他的提示该成如下:在CDlgEx()中定义一个void Quit()
{
DestroyWindow();
}
在void CDlgEx::PostNcDestroy()
{
CDialog::PostNcDestroy();
delete this;//这句加上一句前面 和后面都试过
}
然后在主窗体中
while(1)
{
dlg=new CDlgEx();
dlg->Create(IDD_DIALOG1);
dlg->ShowWindow(SW_SHOW);
dlg->Quit();
}
可是还是不好用....郁闷
最后看一个人的帖子http://www.21tx.com/dev/2005/05/06/11661.html决定用他的方法 可是还是不好用,不知道为什么,希望大家帮我看看,郁闷,如果 有好方法请大家留下言吧,或加我QQ 164189616交流,非常感谢