私はC++/cliプログラミングの新人です。今日は私のプロジェクトの一つでgcroot
に出くわして、その使い方と混同しました。 見つかりましたgcroot
はGChandle
のラッパーです。管理対象オブジェクトが参照されているので、オブジェクトが削除されないようにガベージコレクタに通知します。ネイティブC++関数の内部でgcrootは必要ですか?
gcroot
を使用すると、ネイティブクラスのプロパティを宣言して管理オブジェクトへの参照を保持することが理にかなっています。
int NativeFunction()
{
gcroot<ManagedType^> xx = gcnew ManagedType();
return xx->FunctionCalled();
}
は、実装のこの種のは良い習慣です。しかし、私はgcroot
も以下のようなプロジェクトではどこでも使用されましたか?ここでgcroot
を使用する必要がありますか?
私はのように、gcroot
なしxx
を宣言した場合:
ManagedType^ xx = gcnew ManagedType();
は、それがどんな問題を作成していますか?