学习多线程代码遇到内存泄露

 

学习多线程http://www.vckbase.com/document/viewdoc/?id=1706 时

问题的发生:

创建新类 class CUIThread : public CWinThread 

protected://声明一个对象
CUIThreadDlg m_dlg; //界面窗口

BOOL CUIThread::InitInstance()
{
 m_dlg.Create(IDD_UITHREADDLG);
 m_dlg.ShowWindow(SW_SHOW);
 m_pMainWnd = &m_dlg;
 return TRUE;
}

int CUIThread::ExitInstance()
{
 // TODO: Add your specialized code here and/or call the base class
 m_dlg.DestroyWindow()
 return CWinThread::ExitInstance();
}

在CUIThreadDlg类中没有调用DestroyWindow();
//问题在这:ExitInstance在界面线程退出并不会调用到这个函数,导致 m_dlg对象不能销毁。内存泄露.

修改:在退出线程界面时调用 DestroyWindow();自己销毁对象因为是无模式对话框

void CUIThreadDlg::OnOK()
{
 // TODO: Add extra validation here
 CDialog::OnOK();
 DestroyWindow();
}

void CUIThreadDlg::OnCancel()
{
 // TODO: Add extra cleanup CDialog
 CDialog::OnCancel();
 DestroyWindow();
}

内存泄露得到解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值