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