ref new、gcnew (C++/CLI と C++/CX)

ref new 集計キーワードは、オブジェクトがアクセスできなくなったときにガベージ コレクションによって収集され、割り当てられたオブジェクトへのハンドル (^) を返す型のインスタンスを割り当てます。

すべてのランタイム

ref new によって割り当てられた型のインスタンスのメモリは、自動的に解放されます。

ref new 演算では、メモリを割り当てることができない場合は OutOfMemoryException がスローされます。

ネイティブ C++ 型のメモリの割り当てと解放の詳細については、「new 演算子と delete 演算子」を参照してください。

Windows ランタイム

有効期間が自動的に管理される Windows ランタイム オブジェクトのメモリを割り当てるには、ref new を使用します。 オブジェクトは、参照の最後のコピーがスコープ外になった後で参照カウントが 0 になると、自動的に解放されます。 詳細については、「Ref クラスと構造体」を参照してください。

必要条件

コンパイラ オプション: /ZW

共通言語ランタイム

マネージド型 (参照型または値型) のメモリは gcnew によって割り当てられ、ガベージ コレクションによって解放されます。

必要条件

コンパイラ オプション: /clr

次の例では、gcnew を使用して Message オブジェクトを割り当てています。

// mcppv2_gcnew_1.cpp
// compile with: /clr
ref struct Message {
   System::String^ sender;
   System::String^ receiver;
   System::String^ data;
};

int main() {
   Message^ h_Message  = gcnew Message;
  //...
}

次の例では、gcnew を使用して、参照型のように使用するボックス化された値型を作成しています。

// example2.cpp : main project file.
// compile with /clr
using namespace System;
value class Boxed {
    public:
        int i;
};
int main()
{
    Boxed^ y = gcnew Boxed;
    y->i = 32;
    Console::WriteLine(y->i);
    return 0;
}
32

関連項目

.NET および UWP でのコンポーネント拡張