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 クラスおよび構造体)」を参照してください。
要件
Compiler option: /ZW
共通言語ランタイム
マネージ型 (参照型または値型) のメモリは gcnew によって割り当てられ、ガベージ コレクションによって解放されます。
要件
Compiler option: /clr
例
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;
}
出力