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

A palavra-chave agregada ref new aloca uma instância de um tipo que é coletado como lixo quando o objeto se torna inacessível e retorna um identificador (^) para o objeto alocado.

Todos os Runtimes

A memória de uma instância de um tipo alocada por ref new é desalocada automaticamente.

Uma operação ref new lança OutOfMemoryException se não conseguir alocar memória.

Saiba mais sobre como a memória para tipos C++ nativos é alocada e desalocada em operadores new e delete.

Windows Runtime

Use ref new para alocar memória para objetos do Windows Runtime cujo tempo de vida você deseja administrar automaticamente. O objeto é desalocado automaticamente quando sua contagem de referência vai para zero, o que ocorre após a última cópia da referência ter saído do escopo. Saiba mais em Classes e structs ref.

Requisitos

Opção do compilador: /ZW

Common Language Runtime

A memória de um tipo gerenciado (referência ou tipo de valor) é alocada por gcnew e desalocada usando a coleta de lixo.

Requisitos

Opção do compilador: /clr

Exemplos

O exemplo a seguir usa gcnew para alocar um objeto 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;
  //...
}

O exemplo a seguir usa gcnew para criar um tipo de valor demarcado para uso como um tipo de referência.

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

Confira também

Extensões de componentes para .NET e UWP