有一个程序,class A中含有线程句柄m_hThread.class A{
HANDLE m_hThread;
};.......程序不断调用CreateThread来产生线程,但返回的句柄都是m_hThread.
m_hThread = CreateThread(...)当程序退出时,调用CloseHandle(m_hThread);释放句柄.我的问题是---"不断调用CreateThread来产生线程",是否会产生内存泄漏(虽然在程序最后退出是调用了CloseHandle)???
HANDLE m_hThread;
};.......程序不断调用CreateThread来产生线程,但返回的句柄都是m_hThread.
m_hThread = CreateThread(...)当程序退出时,调用CloseHandle(m_hThread);释放句柄.我的问题是---"不断调用CreateThread来产生线程",是否会产生内存泄漏(虽然在程序最后退出是调用了CloseHandle)???
解决方案 »
- 怎样把基于对话框的MFC程序转化为COM组件
- IDC_STATIC中动态加入无框对话框
- 散分!新版怎么搞的??我在VC/MFC版回了帖,在“我参与的帖子”列表里怎么看不到?"我得分的帖子"列表也不能找到我得分的帖子???
- CreateThread 之后再 CreateProcess就出错了,请问是什么原因?
- 请教网页中调用自己开发的ocx的问题
- MSDN帮助中的一个问题
- 创建数据库的问题,创建失败
- mfc 数组 问题。。。菜鸟求解
- 一个极其弱智类与控件连接的问题!答对了高分相送!
- asp中用get传递textarea中的内容时长度有限制,如何解决
- 请问登录密码如何设置为区别大小写?该SQL语句是?
- 如何实现打印视图中所画的内容阿?
HANDLE m_hThread;
};.......程序不断调用CreateThread来产生线程,但返回的句柄都是m_hThread.
m_hThread = CreateThread(...)
但都没有及时释放句柄.只是在当程序退出时,调用CloseHandle(m_hThread);释放句柄.我的问题是---"不断调用CreateThread来产生线程"(没有及时释放句柄),是否会产生内存泄漏(虽然在程序最后退出是调用了CloseHandle)???
而你只有一个句柄,那么释放的是最后一个被创建的线程,你前面创建的线程因为不能被释放(如果没有运行完)就会占用你的资源,而且你的最后一个线程如果还在存活的话,因为没有TerminateThread,即使CloseHandle,也不不会释放线程占用的资源.
可是你为什么要那样呢?那不就等于在伤害你的电脑吗?
如果你不断地开线程,而那些线程都在工作的话,可以把这些句柄塞入一个队列,等到他们工作完的时候再CloseHandle,线程结束后及时CloseHandle是个好习惯。
如果开了一个线程后先前的线程已经停止工作了,就及时CloseHandle,免得先前句柄逃脱你的管理,成为野指针,造成一些隐患。
伤害电脑倒也谈不上,程序退出后什么都释放了。