ref new, gcnew (C++/CLI e C++/CX)

La parola chiave aggregata ref new alloca un'istanza di un tipo sottoposto a Garbage Collection quando l'oggetto diventa inaccessibile e restituisce un handle (^) all'oggetto allocato.

Tutti i runtime

La memoria per un'istanza di un tipo allocata da ref new viene deallocata automaticamente.

Un'operazione ref new genera un'eccezione OutOfMemoryException se non è in grado di allocare memoria.

Per altre informazioni su come viene allocata e deallocata la memoria per i tipi C++ nativi, vedere gli operatori new e delete.

Windows Runtime

Usare ref new per allocare memoria per oggetti Windows Runtime di cui si vuole amministrare automaticamente la durata. L'oggetto viene automaticamente deallocato quando il conteggio dei riferimenti scende a zero. Questo si verifica dopo che l'ultima copia del riferimento esce dall'ambito. Per altre informazioni, vedere Classi e struct di riferimento.

Requisiti

Opzione del compilatore: /ZW

Common Language Runtime

La memoria per un tipo gestito (tipo riferimento o tipo valore) viene allocata da gcnew e deallocata tramite Garbage Collection.

Requisiti

Opzione del compilatore: /clr

Esempi

L'esempio seguente usa gcnew per allocare un oggetto Message.

// 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;
  //...
}

L'esempio seguente usa gcnew per creare un tipo valore boxed da usare come tipo riferimento.

// 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

Vedi anche

Estensioni componenti per .NET e UWP