在VC++中用AfxBeginThread()開啓線程的時候,返回的是CWinThead類的指針。可是使用後是否應該用CloseHandle釋放內核資源呢?編程
在《Windows核心編程》中說在使用ExitThread()函數終止線程的時候雖然系統資源會被清理掉,可是C/C++資源(如C++類資源)不會被銷燬。使用TerminateThread函數終止線程時,該線程的堆棧資源是不會被銷燬的。並建議最好的使線程結束的方式就是使線程函數正常退出。可是這裏不知道是否要用CloseHandle來關閉系統內核對象,也就是句柄。以及是否須要delete CWinThread指針。函數
經查MSDN,在CWinThread類中有個m_bAutoDelete的變量,該變量是在線程結束的時候是否Delete掉本身,而這個值默認是設爲TRUE的。delete的時候是會執行該類的析構函數的,在析構函數中應該是會銷燬系統資源的。以下圖,m_bAutoDelete的值是1。線程
當線程結束的時候,在查看CWinThread類中的值,發現是亂碼之類的,這時其實該CWndThread指針所指的對象已經被delete掉了。以下圖:指針