简单问题,分高,结贴快,求解决方法!

Mimickey 2003-10-21 10:15:43
线程中有一阻塞调用,用户界面能结束该线程,怎样才能在结束该线程的时候清除线程分配的堆内存(此时线程已阻塞)?
...全文
34 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
duyhui 2003-10-21
  • 打赏
  • 举报
回复
其实,你可以退出线程,程序会自动释放分配的资源。强行结束,不光内存要释放,别的资源也要释放。

不过,从程序角度考虑,ExitThread(0),就可以了
dwangs 2003-10-21
  • 打赏
  • 举报
回复
确实如上所说
不过可以让该线程所有的分配使用HeapCreate()新建堆,然后结束时整堆删除,这样即可
不影响程序的全局堆
skt01 2003-10-21
  • 打赏
  • 举报
回复
UP
microyzy 2003-10-21
  • 打赏
  • 举报
回复
阻塞时时不可能的
你应该在线程了;定时检测退出的信号
huanyun 2003-10-21
  • 打赏
  • 举报
回复
如果是用WaitForSingleObject 阻塞
可修改
while(WaitForSingleObject(object, 500) == WAIT_TIMEOUT)
{
if(gbExit)
{
delete memory;
return;
}
}


在线程中使用gbExit,
需要退出程序的时候设置gbExit为true

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧