Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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