线程句柄造成内存泄露,请教高手如何避免

 我来答
物质狂353
2013-12-03 · TA获得超过148个赞
知道答主
回答量:143
采纳率:100%
帮助的人:79.5万
展开全部
因此,两个问题: ------解决方案-------------------- 应该设置正确的出口条件。 ------解决方案-------------------- 可以用WaitForSingleObject来判断线程是否已经结束。 ------解决方案-------------------- 你必须等待你的线程返回。 HANDLE hAllThread[5]; WaitForSingleObject(hAllThread, 5, TRUE, 100000); 返回以后才是安全的 ------解决方案-------------------- WaitForMultipleObject ------解决方案-------------------- 晕了,如果lz直接在对话框线程用WaitForMultipleObject或者MsgWaitForMultiObjects等wait函数,那么在wait的时候,线程被阻塞,界面就失去响应了。。。 有2个简单的办法: 1 不使用wait族函数,而是在2个线程函数返回的时候,自己给主线程发一个自定义消息。 主线程使用一个标志记录2个线程是否结束处理,收到这个自定义消息后将标志置上。最后主线程要退出的时候,比如收到WM_DESTROY消息,判断一下标志,如果标志说明线程没有结束,则调用TerminateThread强制结束,或者等待,然后CloseHandle线程句柄。 会不会虽然只有2个线程函数,但是因为所谓的定时调用,产生了线程的多个实例,而一直用原来的句柄变量来收集这些新实例的句柄,这样句柄原来的内核对象就失去释放的机会了。。。 如果是这样,解决的办法还是如上,不过麻烦了点,每次调用创建线程函数时都应该产生一个新句柄,并且要记录下来。。。
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式