1

これは、HANDLE の正しい使用法に関する非常に基本的な質問です。次のコードが与えられた場合 (特定のソース ファイルではありません):

typedef void* HANDLE;

HANDLE myHandle;

myHandle = SomeObject;

//...some elaborate code...//
  1. 最初の質問: myHandle は現在、スタックまたはヒープに配置されていますか? ハンドルはインデックスだけでなくポインタにもなり得るので、それについてはよくわかりません。

    myHandle が範囲外になった時点で削除されます (少なくとも私はそう思います)。ただし、クラス メンバーの場合は、所有しているオブジェクトが削除されるまで表示されたままになります。2番目の質問:

  2. myHandle へのこれ以上のアクセスを避けたい場合は、それを行うことをお勧めしますか?

    myHandle = 0;  // I do not need this handle anymore
    

    現在、メモリ管理との競合、またはマネージ コードに関するその他の制限に遭遇することはありますか? ポインターと同様に、このハンドルを使用しないことを示す他のオプションはありますか?

    mypointer = NULL;
    

編集: ガベージ コレクションについて話していましたが、これは明らかに c++ には含まれていません。これは管理対象拡張機能の一部です。この致命的なエラーで私を助けてくれてありがとう!

4

3 に答える 3