强行终止SOCKET线程后,系统提示内存未释放,求高手解答

豆丁快跑 2003-06-11 04:34:58
下面是出现问题的提示:
Detected memory leaks!
Dumping objects ->
thrdcore.cpp(311) : {1550} client block at 0x01CFF300, subtype c0, 68 bytes long.
a CWinThread object at $01CFF300, 68 bytes long
thrdcore.cpp(311) : {1541} client block at 0x01CFEFB8, subtype c0, 68 bytes long.
a CWinThread object at $01CFEFB8, 68 bytes long
thrdcore.cpp(311) : {1532} client block at 0x01CFEC70, subtype c0, 68 bytes long.
...全文
90 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lichungen 2003-06-12
  • 打赏
  • 举报
回复
最好让线程自身退出,如
在线程中
While(g_Run)
{
........
}

可以在主线程中设置
g_Run = FALSE;
从而让线程退出
SOCKET最好是线程中的局部变量,因而线程退出时会释放资源
豆丁快跑 2003-06-11
  • 打赏
  • 举报
回复
To eureka007

取得创建线程的句柄后就可以在外部直接强制关闭了。
豆丁快跑 2003-06-11
  • 打赏
  • 举报
回复
To NowCan

你的意思是说不要先关闭掉SOCKET连接,然后在关闭线程是吗?

我是这样做的,我现在在想是不是干脆直接关闭线程算了。(估计行不通,没做实验)
brightboy 2003-06-11
  • 打赏
  • 举报
回复
尽一切可能不要用TerminalThread,最好让线程自己退出。
NowCan 2003-06-11
  • 打赏
  • 举报
回复
好像先把那个socket close掉,阻塞函数就返回了。当然结果肯定是错的了。
eureka007 2003-06-11
  • 打赏
  • 举报
回复
同时在外部通过TerminalThread和CloseHandle函数来关闭线程。
具体怎么做呀!
豆丁快跑 2003-06-11
  • 打赏
  • 举报
回复
小第通过AfxBegingThread函数启动了工作者线程,同时在外部通过TerminalThread和CloseHandle函数来关闭线程。

工作者线程内实现的是阻塞方式的SCOKET通讯,现在是但外部强制关闭线程后,然后就发现线程中有些资源没有被完全释放掉。

不知道我还有那些地方有错漏了。
醉马不肖 2003-06-11
  • 打赏
  • 举报
回复

15,467

社区成员

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

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