1

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

そのような:

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

そして通常の C++ ポインタ?

また、それらは C# の参照とどのように関連していますか?

4

1 に答える 1

1

(古い) Managed C++ について話しているのではなく、C++/CLI について話しているのではないでしょうか?

C# では、コードは次のようになります。

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

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

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

于 2009-12-17T18:32:37.840 に答える