2012-01-25 4 views
1

CreateThreadHANDLECloseHandleのCreateThreadハンドルリーク

ドキュメントでクローズする必要があるオブジェクトThe thread object remains in the system until the thread has terminated and all handles to it have been closed through a call to CloseHandle.

私の質問は、戻り変数がを使用しない場合は何が起こるかであると述べてを返します。これは返されたハンドルを閉じないことと等しく、ハンドルリークがあるためです。それは正しい?

+0

faeryが世話をするのを避けてください。 winapi関数がハンドルを返した場合、それを解放するのはあなたの仕事です。そしてもちろん、あなたはいつも*呼び出しが失敗したかどうかをチェックしたい。 –

+1

後でスレッドを終了するまで待つ必要がない限り、最も簡単なことは、CreateThreadを呼び出した後でCloseHandle(hThread)を実行するだけです。それで、再度心配する必要はありません。 – BrendanMcK

答えて

3

これは返されたハンドルを閉じていないことと同じで、ハンドルリークがあるためですか?それは正しい?

オペレーティングシステムのリソースがリークします。これは、メモリリークが発生したときにメモリがリークするのと同じです。

リファレンス:
MSDN Documentation

は、関連するスレッドを終了またはスレッドオブジェクトを削除しないスレッドハンドルを閉じます。プロセス・ハンドルをクローズしても、関連プロセスを終了したり、プロセス・オブジェクトを削除したりすることはありません。スレッドオブジェクトを削除するには、スレッドを終了してから、そのスレッドのすべてのハンドルを閉じる必要があります。

関連する問題