关于多线程[2011-06-20]

解决多线程内存泄露
本文探讨了多线程程序开发中出现的内存泄露问题,尤其是在主线程先于子线程退出的情况下。文章提供了一种确保子线程全部正常退出的方法,从而避免内存泄露。

    关于多线程程序开发的时候,出现的莫名奇妙的内存泄露。从程序上面我们发现,每次new我们都正常delete了,而其他API的使用也反复检查正确。但在程序退出的时候仍然会报告内存泄露,主要原因在于主线程很可能在子线程退出之前便退出了。因为主线程已经退出,系统会强迫退出子线程,这时候子线程就很可能没有来得及释放一些变量分配的空间便被结束了。于是造成了VS ide报告内存泄露,做法是在主线程中等待所有子线程的退出。最后退出主线程。如下:

   while(!fileTransThreadList.IsEmpty())
    {
         CWinThread *pFileSendThread;
         pFileSendThread = (CWinThread *)fileTransThreadList.RemoveHead();
         ::PostThreadMessage(pFileSendThread->m_nThreadID,WM_QUIT,0,0);
         WaitForSingleObject(pFileSendThread->m_hThread,INFINITE);
    }

题外:对于虚函数,要重载它们则必须要从该类继承下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值