当启动CWinThread后使其挂起,再对其释放时不能释放干净
执行如下代码,我们可以看到任务管理器内存增长很快,出现内存泄漏
(p是当前类对象指针,传给线程函数的作用是让线程访问类成员变量)
while(true)
{
Sleep(100);
if(p->th!= NULL)
{
p->th->ExitInstance();
CloseHandle(p->th->m_hThread);
}
p->th = AfxBeginThread(Function,(LPVOID)p,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);
p->th->m_bAutoDelete = FALSE;
}
执行如下代码不会出现内存增长:
while(true)
{
Sleep(100);
if(p->th!= NULL)
{
p->th->ExitInstance();
CloseHandle(p->th->m_hThread);
}
p->th = AfxBeginThread(Function,(LPVOID)p);
p->th->m_bAutoDelete = FALSE;
}
让CWinThread自己释放也类似
如下会出现内存增长:
while(true)
{
Sleep(100);
p->th = AfxBeginThread(Function,(LPVOID)p,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);
}
如下代码不会出现内存增长:
while(true)
{
Sleep(100);
p->th = AfxBeginThread(Function,(LPVOID)p);
}