社区
进程/线程/DLL
帖子详情
子线程的内存泄漏问题?
bluemouse_1982
2004-04-03 09:04:16
在子线程中:
....
LPTSTR buf = new TCHAR[255];
//将子线程挂起一段时间,若在这段时间内关闭窗口(即结束主线程),
//将不会执行以下语句以释放资源
delete [] buf;
....
由于无法执行delete,产生了内存泄漏,该如何解决呢?
...全文
121
11
打赏
收藏
子线程的内存泄漏问题?
在子线程中: .... LPTSTR buf = new TCHAR[255]; //将子线程挂起一段时间,若在这段时间内关闭窗口(即结束主线程), //将不会执行以下语句以释放资源 delete [] buf; .... 由于无法执行delete,产生了内存泄漏,该如何解决呢?
复制链接
扫一扫
分享
转发到动态
举报
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
QT
子
线程
更新主
线程
QT
子
线程
更新主
线程
android
子
线程
URL加载网络图片
Android 通过
子
线程
加载URL图片
MFC中解决
子
线程
中打开非模态对话框
内存泄漏
实例(VC++2008)
子
线程
中打开非模式对话框
内存泄漏
问题
这个
问题
困扰已久 网上没有完整的解决方案;现将实例源代码分享给大家 希望对您有帮助 (代码是VS2008下编写的)
问题
原因: 对话框的默认关闭方式模式对话框关闭 而现在是以非模式对话框方式打开 所以关闭的时候要把模式对话框的处理屏蔽 解决方案如下: 重写对话框的PostNcDestroy OnClose OnDestroy 具体代码如下: void CMyDlg::PostNcDestroy { TODO: 在此添加专用代码和 或调用基类 delete this; CDialog::PostNcDestroy ; } void CMyDlg::OnClose { TODO: 在此添加消息处理程序代码和 或调用默认值 this >DestroyWindow ; CDialog::OnClose ; } void CMyDlg::OnDestroy { CDialog::OnDestroy ; PostQuitMessage 0 ; TODO: 在此处添加消息处理程序代码 } 另外默认的Ok Cancel按钮换成 void CMyDlg::OnBnClickedOk { TODO: 在此添加控件通知处理程序代码 OnOK ; this >DestroyWindow ; } void CMyDlg::OnBnClickedCancel { TODO: 在此添加控件通知处理程序代码 OnCancel ; this >DestroyWindow ; }">
子
线程
中打开非模式对话框
内存泄漏
问题
这个
问题
困扰已久 网上没有完整的解决方案;现将实例源代码分享给大家 希望对您有帮助 (代码是VS2008下编写的)
问题
原因: 对话框的默认关闭方式模式对话框关闭 而现在 [更多]
QT多
线程
编程、主
线程
与
子
线程
交互数据
QT多
线程
编程,QT5+VS2017
android主
线程
、
子
线程
及
线程
间通信方式测试app
测试Android主
线程
、
子
线程
(thread、handlerThread、AsyncTask、timer)及
线程
间通信方式(handler、timetask、Runnable)的建立及工作过程
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章