Freigeben über


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

Siehe auch

Komponentenerweiterungen für .NET und UWP