Compartir a través de


ref new, gcnew (Extensiones de componentes de C++)

La palabra clave de agregado ref new asigna una instancia de un tipo que se recolecta con los elementos no utilizados cuando el objeto queda inaccesible y que devuelve un identificador (^) al objeto asignado.

Todos los runtimes

La memoria de una instancia de un tipo asignado por ref new se desasignó automáticamente.

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

Para obtener más información acerca de cómo se asigna y desasigna la memoria de los tipos de C++ nativo, vea los operadores new y delete.

Windows en tiempo de ejecución

Use ref new para asignar memoria para los objetos de Windows en tiempo de ejecución cuya duración desee administrar automáticamente.El objeto se desasigna automáticamente cuando su recuento de referencia llega a cero, lo que ocurre después de que la última copia de la referencia haya salido del ámbito.Para obtener más información, vea Clases y structs ref (C++/CX).

te3ecsc8.collapse_all(es-es,VS.110).gifRequisitos

Opción del compilador: /ZW

Common Language Runtime

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

te3ecsc8.collapse_all(es-es,VS.110).gifRequisitos

Opción del compilador: /clr

te3ecsc8.collapse_all(es-es,VS.110).gifEjemplos

Ejemplo

En el ejemplo siguiente se utiliza un objeto 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;
  //...
}

Ejemplo

En el ejemplo siguiente se usa gcnew para crear un tipo de valor de conversión boxing para su uso 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;
}

Output

  

Vea también

Conceptos

Extensiones de componentes para plataformas de tiempo de ejecución