マネージC ++ ^(ハンドル)->それは何であり、それは参照とポインタにどのように関係していますか

StackOverflow https://stackoverflow.com/questions/1820841

  •  10-07-2019
  •  | 
  •  

質問

マネージC ++のオブジェクトへのハンドルの違いは何ですか

例:

System::String^ str = gcnew System::String();

および通常のC ++ポインター?

また、C#にある参照とどのように関連していますか?

役に立ちましたか?

解決

(古い)Managed C ++についてではなく、C ++ / CLIについてですよね?

C#では、コードは次と同等です

System.String str=new System.String();

C ++ / CLIでは、オブジェクトへのハンドルはC#の参照とまったく同じです。参照カウント、ガベージコレクターなどがあります。

一方、通常のC ++ポインターは、(ほとんどの場合)アンマネージオブジェクトへのポインターです。 (もちろん)マネージオブジェクトへのC ++ポインターを使用できます。これは、C#(安全でないコード)でポインターを使用できる方法と同じです。 C#のポインターの詳細な説明については、こちらをご覧ください。 C ++ / CLIのポインターの詳細については、こちらをご覧ください。これらのポインターは、ガベージコレクターによって処理されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top