Condividi tramite


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 la pagina relativa alle classi e struct Ref.

te3ecsc8.collapse_all(it-it,VS.110).gifRequisiti

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.

te3ecsc8.collapse_all(it-it,VS.110).gifRequisiti

Opzione del compilatore: /clr

te3ecsc8.collapse_all(it-it,VS.110).gifEsempi

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

  

Vedere anche

Concetti

Estensioni componenti per le piattaforme runtime