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