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

La palabra clave agregada ref new asigna una instancia de un tipo que se recolecta como elemento no utilizado cuando el objeto deja de estar accesible y que devuelve un identificador (^) al objeto asignado.

Todos los runtimes

La memoria para una instancia de un tipo que se asigna mediante ref new se desasigna automáticamente.

Una operación ref new inicia OutOfMemoryException si no puede asignar memoria.

Para obtener más información sobre la manera en que se asigna y se desasigna memoria para tipos nativos de C++, consulte los operadores new y delete.

Windows en tiempo de ejecución

Use ref new para asignar memoria para objetos de Windows Runtime cuya duración desee administrar automáticamente. El objeto se desasigna automáticamente cuando su recuento de referencias llega a cero, lo que sucede después de que la última copia de la referencia salga del ámbito. Para obtener más información, consulte el artículo sobre las clases de referencia y structs.

Requisitos

Opción del compilador: /ZW

Common Language Runtime

La memoria para un tipo administrado (tipo de valor o referencia) se asigna mediante gcnew y se desasigna mediante la colección de elementos no utilizados.

Requisitos

Opción del compilador: /clr

Ejemplos

En el ejemplo siguiente se usa gcnew para asignar un objeto de mensaje.

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

En el ejemplo siguiente se usa gcnew para crear un tipo de valor con la conversión boxing aplicada para usarlo como tipo de referencia.

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

Consulte también

Extensiones de componentes de .NET y UWP