ref new、gcnew (C++ コンポーネント拡張)

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

All Runtimes

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

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

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

Windows ランタイム

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

te3ecsc8.collapse_all(ja-jp,VS.110).gif要件

Compiler option: /ZW

共通言語ランタイム

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

te3ecsc8.collapse_all(ja-jp,VS.110).gif要件

Compiler option: /clr

te3ecsc8.collapse_all(ja-jp,VS.110).gif

Example

次の例では、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;
  //...
}

Example

次の例では、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;
}

出力

  

参照

概念

ランタイム プラットフォームのコンポーネントの拡張機能