子线程的内存泄漏问题?

bluemouse_1982 2004-04-03 09:04:16
在子线程中:
....
LPTSTR buf = new TCHAR[255];
//将子线程挂起一段时间,若在这段时间内关闭窗口(即结束主线程),
//将不会执行以下语句以释放资源
delete [] buf;
....

由于无法执行delete,产生了内存泄漏,该如何解决呢?

...全文
120 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
windfighter 2004-04-06
  • 打赏
  • 举报
回复
这个问题我也遇到过,主要是在写一些扫描程序的时候遇到,一般情况下我等待子线程自动结束后才能关闭窗体,如果不想等待就只有强行退出,这个时候就会有内存泄漏。我觉得发消息通知线程自己结束比较好,可以设一个数组保存线程句柄~线程结束的时候从数组中删掉,产生线程的时候加句柄到数组中,这样数组中就只有正在运行的线程,退出的时候给数组中的所有线程发退出消息。
可能有点麻烦,没有试过
cryptonym 2004-04-06
  • 打赏
  • 举报
回复
就是呀,我觉得new的不会回收吧。gz
bluemouse_1982 2004-04-06
  • 打赏
  • 举报
回复
进程结束后,用new分配的内存也会回收吗?可在vc.net中却报告内存泄漏。
kof99th 2004-04-05
  • 打赏
  • 举报
回复
一般来讲进程结束后所有的资源都会被系统回收的.
最好还是设定一个标志,让所有子线程根据这个标志判断主线程是否退出,主线程等待子线程完成或者等待一段时间后自己退出.
wuyingwsj 2004-04-05
  • 打赏
  • 举报
回复
看你要做什么,主线程退出后,进程结速,进程的所有资源都会被系统收回,不会出现内存泄漏。
bluemouse_1982 2004-04-05
  • 打赏
  • 举报
回复
分配内存和释放内存肯定是在一个线程中。

》》GoldenSword(金错刀) :
请问线程毁掉函数是什么?

》》ultralzl(自然) :
你的方法我也考虑过,可如果有很多线程,而且事先无法得知到底会产生多少线程,即无法保存线程句柄时该怎么办?
ultralzl 2004-04-04
  • 打赏
  • 举报
回复
为什么不在关闭主线程时,发送一个退出消息给子线程,然后在主线程中WaitForSingleObject(子线程句柄),等待子线程退出,然后主线程再退出。
linxy2002 2004-04-04
  • 打赏
  • 举报
回复
学习中
zhuyanwei 2004-04-04
  • 打赏
  • 举报
回复
你确保分配内存和分析构内存是在同一个线程?
bitcof 2004-04-04
  • 打赏
  • 举报
回复
为什么不就在子线程中释放内存??
GoldenSword 2004-04-03
  • 打赏
  • 举报
回复
在线程毁掉函数里面delete

15,473

社区成员

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

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