强行终止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.
...全文
138 8 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
内容概要:本文系统研究了基于电流和功率两种模型预测控制(MPC)方法对三相并网逆变器进行闭环仿真控制的策略,旨在提升逆变器在复杂电网环境下的动态响应性能与系统稳定性。通过在Simulink中构建电流预测与功率预测双模式MPC控制模型,实现了对并网电流、有功及无功功率的高精度跟踪与调节。研究涵盖了系统建模、预测控制器设计、代价函数构建、约束条件处理以及多工况仿真验证,重点对比分析了两种MPC策略在稳态运行、电网扰动及动态切换等场景下的控制性能差异。结果表明,所提出的双模式MPC方法能有效抑制电流畸变、提升功率调节精度,并显著增强系统的鲁棒性与电能质量。; 适合人群:具备电力电子、自动控制理论基础,熟练掌握MATLAB/Simulink仿真工具,从事新能源发电、并网逆变器控制、微电网系统等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入理解模型预测控制在三相并网逆变器中的具体应用原理与实现流程;② 对比分析电流型MPC与功率型MPC在控制精度、动态响应和抗扰能力方面的性能差异;③ 为高性能并网逆变器控制器的设计、优化与工程化实现提供理论依据和仿真技术支持。; 阅读建议:建议结合提供的Simulink仿真模型与Matlab代码进行动手复现,重点关注预测模型的建立过程、代价函数的设计逻辑以及系统约束的处理方法,并通过设置不同电网工况进行测试,深入掌握MPC控制的实时优化机制与动态调节特性。

15,465

社区成员

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

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