CloseHandle的功能是關(guān)閉一個(gè)打開(kāi)的對(duì)象句柄,該對(duì)象句柄可以是線程句柄,也可以是進(jìn)程、信號(hào)量等其他內(nèi)核對(duì)象的句柄,而ExitThread的功能是終止一個(gè)線程,它所接受的參數(shù)是一個(gè)線程的退出碼。?
??
???? 通過(guò)調(diào)用CloseHandle可以告知系統(tǒng),已經(jīng)完成了對(duì)某一內(nèi)核對(duì)象的操作,該函數(shù)首先檢查調(diào)用進(jìn)程的句柄表,來(lái)確認(rèn)進(jìn)程是否對(duì)該句柄所指向的對(duì)象有訪問(wèn)權(quán),如果句柄無(wú)效則返回FALSE,如果有效,系統(tǒng)將得到該內(nèi)核對(duì)象的數(shù)據(jù)結(jié)構(gòu)的地址,把結(jié)構(gòu)中的使用計(jì)數(shù)成員減1,如果計(jì)數(shù)變?yōu)?,則將從內(nèi)核中釋放該內(nèi)核對(duì)象。?
??
???? 如果計(jì)數(shù)還未到0,就意味著還有其他的進(jìn)程在使用這個(gè)內(nèi)核對(duì)象,那么它就不會(huì)被釋放。?
??
???? ExitThread是推薦使用的結(jié)束一個(gè)線程的方法,當(dāng)調(diào)用該函數(shù)時(shí),當(dāng)前線程的棧被釋放,然后線程終止,相對(duì)于TerminateThread函數(shù)來(lái)說(shuō),這樣做能夠更好地完成附加在該線程上的DLL的清除工作。?
其實(shí)可以通過(guò)這個(gè)來(lái)避免c++里面的內(nèi)存泄露