ref new, gcnew (C++/CLI a C++/CX)
Nové agregační klíčové slovo ref přiděluje instanci typu, která je uvolněna paměti, když se objekt stane nepřístupným a který vrátí popisovač (^) přidělenému objektu.
Všechny moduly runtime
Paměť pro instanci typu, která je přidělena novým odkazem, je uvolněna automaticky.
Nová operace ref vyvolá OutOfMemoryException
, pokud nemůže přidělit paměť.
Další informace o přidělování a uvolnění paměti pro nativní typy jazyka C++ najdete v nových a odstraňovacích operátorech.
prostředí Windows Runtime
Pomocí odkazu nové přidělte paměť pro prostředí Windows Runtime objekty, jejichž životnost chcete spravovat automaticky. Objekt se automaticky uvolní, když jeho počet odkazů přejde na nulu, což nastane po poslední kopii odkazu se vyřadí z rozsahu. Další informace naleznete v tématu Ref třídy a struktury.
Požadavky
Možnost kompilátoru: /ZW
CLR (Common Language Runtime)
Paměť pro spravovaný typ (odkaz nebo typ hodnoty) je přidělena uvolňováním paměti a uvolněna pomocí uvolňování paměti.
Požadavky
Možnost kompilátoru: /clr
Příklady
Následující příklad používá gcnew k přidělení Message objektu.
// 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;
//...
}
Následující příklad používá gcnew k vytvoření boxed typ hodnoty pro použití jako typ odkazu.
// 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