|
分類:[C/C++]
C++ (VC++ 2010 Express)を使用しています。 CreateSemaphore関数で作成したセマフォオブジェクトを クローズするときに実行エラーが発生します。 原因の切り分けについて教えてください。
具体的には 1.コンストラクタで共有メモリへの排他制御を行うためのセマフォオブジェクトを作成 2.デストラクタでセマフォオブジェクトのハンドルをクローズ
1.について コンストラクタ内でセマフォオブジェクトを生成しています。
sem = CreateSemaphore(NULL, 1, 1, SEMAPHORE_NAME); (semはメンバ変数)
2.について デストラクタ内で ::CloseHandle(sem); という処理を使ってハンドルクローズする際にエラーが起きています。 (semは上記のCreateSemaphoreで作成したセマフォオブジェクト(メンバ変数))
また、ハンドルクローズ前には semがNULLでないことと、INVALID_HANDLE_VALUEでないことのチェックは行っています。 (if((sem == NULL)||(sem == INVALID_HANDLE_VALUE)) で確認しています。)
考えられる原因や、調査の方法について教えてください。 よろしくお願いします。
|