ref new, gcnew (расширения компонентов C++)

Агрегатное ключевое слово ref new выделяет экземпляр типа, который уничтожается сборщиком мусора, когда объект становится недоступным, и возвращает дескриптор (^) для выделенного объекта.

Все среды выполнения

Память для экземпляра типа, которая выделена ref new, освобождается автоматически.

Операция ref new создает исключение OutOfMemoryException, если она не может выделить память.

Дополнительные сведения о выделении и освобождении памяти для собственных типов C++ см. в разделе Операторы new и delete.

Среда выполнения Windows

Используйте ref new, чтобы выделить память для объектов среды выполнения Windows, время существования которых требуется администрировать автоматически. Память из под объекта автоматически освобождается, когда его счетчик ссылок достигает нуля, что происходит после того, как последняя копия ссылки вышла за границу области. Дополнительные сведения см. в Ссылочные классы и структуры.

Требования

Параметр компилятора: /ZW

Среда CLR

Память для управляемого типа (ссылки или типа значения) выделяется gcnew и освобождается с помощью сборки мусора.

Требования

Параметр компилятора: /clr

Примеры

Пример

В следующем примере используется gcnew для выделения объект сообщения.

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

Пример

В следующем примере gcnew используется при создания упакованного типа значения для использования его как ссылочного типа.

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

  

См. также

Основные понятия

Расширения компонентов для платформ среды выполнения