Memory leak in CWinThread?

Memory leak in CWinThread?

类似的问题见http://www.experts-exchange.com/Programming/Programming_Languages/MFC/Q_20084406.html

下面的代码,当用AfxBeginThread开始一个线程时,实际上是有内存泄漏的

for  (ii  =   0 ; ii  <   1000 ; ii ++
{
  CWinThread 
* pWinThread; 
  pWinThread 
=  AfxBeginThread(ThreadLBProc, NULL);
  ::Sleep(
500 );
}

UINT ThreadLBProc(LPVOID pParam)
{
  
return   0 ;
}
VC输出的典型提示为:
Detected memory leaks!
Dumping objects ->
thrdcore.cpp( 166) : {782} client block at 0x00425300, subtype 0, 112 bytes long.
实际上,只要看到是 thrdcore.cpp(166) 的内存泄漏,基本就是同一个原因,和上面的代码一样。
解决方法:
step 1)
在线程函数中,记得写AfxEndThread();(与AfxBeginThread对应,其他的开始线程的函数,有相应的函数)
step 2)
用::WaitForSingleObject()确保线程彻底退出

step 2是比较容易忽略的,用sleep函数只能侥幸的保证线程退出,但不能确保。

你可能感兴趣的:(Memory leak in CWinThread?)