ref new, gcnew (Komponentenerweiterungen für C++)
Das ref new-Aggregatsschlüsselwort ordnet eine Instanz eines Typs zu, die in der Garbage Collection aufgenommen wurde, wenn auf das Objekt nicht mehr zugegriffen werden kann. Es gibt ein Handle (^) für das zugeordnete Objekt zurück.
Alle Laufzeiten
Speicher für eine Instanz eines Typs, der von ref new zugeordnet ist, wird automatisch freigegeben.
Ein ref new-Vorgang löst OutOfMemoryException aus, wenn kein Speicher zugewiesen werden kann.
Weitere Informationen dazu, wie Arbeitsspeicher für systemeigene C++-Typen zugeordnet und freigegeben wird, finden Sie unter Die Operatoren new und delete.
Windows-Runtime
Verwenden Sie ref new, um für Windows-Runtime-Objekte Speicher zu reservieren, deren Lebensdauer Sie automatisch verwalten möchten. Das Objekt wird automatisch freigegeben, wenn der Verweiszähler auf Null zurückgesetzt wird. Dies geschieht, nachdem die letzte Kopie des Verweises aus dem Bereich ungültig geworden ist. Weitere Informationen finden Sie unter Verweisklassen und Strukturen.
Voraussetzungen
Compileroption: /ZW
Common Language Runtime
Arbeitsspeicher für einen verwalteten Typ (Verweis oder Werttyp) wird durch gcnew mithilfe der Garbage Collection zugeordnet und freigegeben.
Voraussetzungen
Compileroption: /clr
Beispiele
Beispiel
Im folgenden Beispiel wird gcnew verwendet, um ein Message-Objekt zurückzugeben.
// 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;
//...
}
Beispiel
Im folgenden Beispiel wird gcnew, um einen geschachtelten Werttyp zu erstellen, der wie ein Referenztyp verwendet wird.
// 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;
}
Ausgabe