C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

セマフォオブジェクトのクローズ時発生するエラーについて

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■91089 / inTopicNo.1)  セマフォオブジェクトのクローズ時発生するエラーについて
  
□投稿者/ auto (1回)-(2019/05/28(Tue) 14:42:40)

分類:[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)) で確認しています。)


考えられる原因や、調査の方法について教えてください。
よろしくお願いします。
引用返信 編集キー/
■91090 / inTopicNo.2)  Re[1]: セマフォオブジェクトのクローズ時発生するエラーについて
□投稿者/ 774RR (690回)-(2019/05/28(Tue) 15:31:47)
とりあえず失敗判定後の GetLastError() の値はいくつ?
コンストラクタ中で得たハンドルの値が、デストラクタに至ったとき壊れてない?
あたりをチェック
引用返信 編集キー/
■91094 / inTopicNo.3)  Re[1]: セマフォオブジェクトのクローズ時発生するエラーについて
□投稿者/ とっちゃん (592回)-(2019/05/28(Tue) 16:36:19)
No91089 (auto さん) に返信
> クローズするときに実行エラーが発生します。
> 原因の切り分けについて教えてください。
>
実行エラーって何ですか?
CやC++ではあんまり使わない言葉のような気がします。

実行時にエラーが発生したということくらいはわかりますが、具体的にどういう風にそれを判定したのか?
が言葉からわからない。。。

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ