ref new, gcnew (C++/CLI i C++/CX)ref new, gcnew (C++/CLI and C++/CX)

Słowo kluczowe ref new Aggregate przydziela wystąpienie typu, który jest wyrzucany przez elementy bezużyteczne, gdy obiekt stał się niedostępny, i zwraca dojście ( ^ ) do przydzielonego obiektu.The ref new aggregate keyword allocates an instance of a type that is garbage collected when the object becomes inaccessible, and that returns a handle (^) to the allocated object.

Wszystkie środowiska wykonawczeAll Runtimes

Przydział pamięci dla wystąpienia typu, który jest przydzielony przez ref new , zostaje cofnięty automatycznie.Memory for an instance of a type that is allocated by ref new is deallocated automatically.

Nowa operacja zwraca wartość, OutOfMemoryException Jeśli nie można przydzielić pamięci.A ref new operation throws OutOfMemoryException if it is unable to allocate memory.

Aby uzyskać więcej informacji o sposobie przydziału i cofania przydziału pamięci dla natywnych typów C++, zobacz Operatory New i DELETE.For more information about how memory for native C++ types is allocated and deallocated, see the new and delete operators.

Środowisko wykonawcze systemu WindowsWindows Runtime

Użyj ref new , aby przydzielić pamięć dla środowisko wykonawcze systemu Windows obiektów, których okres istnienia ma być zarządzany automatycznie.Use ref new to allocate memory for Windows Runtime objects whose lifetime you want to administer automatically. Obiekt zostanie automatycznie cofnięty, gdy jego liczba odwołań spadnie do zera, co występuje po zakończeniu ostatniej kopii odwołania poza zakresem.The object is automatically deallocated when its reference count goes to zero, which occurs after the last copy of the reference has gone out of scope. Aby uzyskać więcej informacji, zobacz klasy referencyjne i struktury.For more information, see Ref classes and structs.

WymaganiaRequirements

Opcja kompilatora: /ZWCompiler option: /ZW

środowiska uruchomieniowe w trakcie wykonaniaCommon Language Runtime

Pamięć dla typu zarządzanego (odwołanie lub typ wartości) jest przydzielone przez gcnew i cofane przy użyciu wyrzucania elementów bezużytecznych.Memory for a managed type (reference or value type) is allocated by gcnew, and deallocated by using garbage collection.

WymaganiaRequirements

Opcja kompilatora: /clrCompiler option: /clr

PrzykładyExamples

Poniższy przykład używa gcnew do przydzielenia obiektu komunikatu.The following example uses gcnew to allocate a Message object.

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

W poniższym przykładzie użyto gcnew , aby utworzyć opakowany typ wartości do użycia jak typ referencyjny.The following example uses gcnew to create a boxed value type for use like a reference type.

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

Zobacz teżSee also

Rozszerzenia składników dla platform .NET i platformy UWPComponent Extensions for .NET and UWP