ref new, gcnew (C++/CLI und C++/CX)
Das ref new-Aggregatschlüsselwort ordnet eine Instanz eines Typs zu, der in der Garbage Collection erfasst wird, wenn auf das Objekt nicht mehr zugegriffen werden kann, wodurch ein Handle (^) zum zugeordneten Objekt zurückgegeben wird.
Alle Laufzeiten
Bei Arbeitsspeicher für eine Instanz eines per ref new zugeordneten Typs wird die Zuordnung automatisch aufgehoben.
Ein ref new-Vorgang löst OutOfMemoryException
aus, wenn kein Arbeitsspeicher zugeordnet werden kann.
Weitere Informationen über die Zuordnung und Aufhebung der Zuordnung von Arbeitsspeicher für native C++-Typen finden Sie unter Operatoren „new“ und „delete“.
Windows-Runtime
Verwenden Sie ref new, um Arbeitsspeicher für Windows-Runtime-Objekte zuzuordnen, deren Lebensdauer Sie automatisch verwalten möchten. Die Zuordnung des Objekts wird automatisch aufgehoben, wenn sein Verweiszähler bei 0 liegt. Dies ist der Fall, nachdem die letzte Kopie des Verweises den Gültigkeitsbereich verlassen hat. Weitere Informationen finden Sie unter Referenzklassen und -strukturen.
Anforderungen
Compileroption: /ZW
Übersicht: Common Language Runtime (CLR)
Der Arbeitsspeicher für einen verwalteten Typ (Verweis- oder Werttyp) wird durch gcnew zugeordnet, die Aufhebung der Zuordnung erfolgt über die Garbage Collection.
Anforderungen
Compileroption: /clr
Beispiele
Das folgende Beispiel verwendet gcnew zum Zuordnen eines Message-Objekts.
// 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;
//...
}
Das folgende Beispiel verwendet gcnew zum Erstellen eines geschachtelten Werttyps, der wie ein Verweistyp verwendet werden soll.
// 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