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