ref new, gcnew (Estensioni del componente C++)
La parola chiave di aggregazione ref new alloca un'istanza di un tipo che viene raccolta dal garbage collector quando l'oggetto diventa inaccessibile e restituisce un handle (^) all'oggetto allocato.
Tutti i runtime
La memoria per un'istanza di un tipo che viene allocato da ref new viene rilasciata automaticamente.
Un'operazione ref new genera OutOfMemoryException se non riesce ad allocare memoria.
Per ulteriori informazioni su come la memoria viene allocata e deallocata per i tipi nativi di C++, vedere la pagina relativa agli operatori new e delete.
Windows Runtime
Si può utilizzare ref new per allocare la memoria per gli oggetti Windows Runtime la cui durata dovrebbe essere amministrata automaticamente. L'oggetto viene deallocato automaticamente quando il conteggio dei riferimenti arriva a zero, che si verifica quando l'ultima copia del riferimento esce dall'ambito. Per ulteriori informazioni, vedere classi e strutture di Ref.
Requisiti
Opzione del compilatore: /ZW
Common Language Runtime
La memoria per un tipo gestito (riferimento o tipo di valore) viene allocata da gcnew e viene deallocata utilizzando la Garbage Collection.
Requisiti
Opzione del compilatore: /clr
Esempi
Esempio
L'esempio seguente utilizza 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;
//...
}
Esempio
L'esempio seguente utilizza gcnew per creare un tipo di valore boxed per utilizzarlo come un 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;
}
Output