マネージC ++ ^(ハンドル)->それは何であり、それは参照とポインタにどのように関係していますか
-
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のポインターの詳細については、こちらをご覧ください。これらのポインターは、ガベージコレクターによって処理されません。所属していません StackOverflow