ref new, gcnew (C++ Component Extensions)
Agregujące słowo kluczowe ref new alokuje instancję typu, która jest zbierana przez moduł Garbage Collector, gdy obiekt stanie się niedostępny, i zwraca uchwyt (^) do zaalokowanego obiektu.
Wszystkie czasy wykonania
Pamięć dla wystąpienia typu, jest przydzielana przez ref new przydział jest cofnięty automatycznie.
ref newoperacja wyrzuca OutOfMemoryException jeśli nie może przydzielić pamięci.
Aby uzyskać więcej informacji dotyczących sposobu przydzielona i usuwania przydziałów pamięci dla typów macierzystym C++, zobacz Nowi i usunięci operatorzy.
Środowisko wykonawcze systemu Windows
Użyj ref new, aby alokować pamięć do obiektów środowiska wykonawczego systemu Windows, których okresem istnienia chcesz zarządzać automatycznie.Obiekt jest automatycznie dealokowany wtedy, kiedy jego licznik odwołań dąży do zera, co następuje po tym, jak ostatnia kopia odwołania wykroczyła poza zakres.Aby uzyskać więcej informacji, zobacz Klasy i struktury referencyjne.
Wymagania
Opcja kompilatora: /ZW
Środowisko uruchomieniowe języka wspólnego
Pamięć dla typu zarządzanego (typu odwołania lub wartości) jest przydzielana przez gcnewi przydział jest cofany przy użyciu wyrzucania elementów bezużytecznych.
Wymagania
Opcja kompilatora: /clr
Przykłady
Przykład
W poniższym przykładzie użyto gcnew, aby przydzielić obiekt 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;
//...
}
Przykład
W poniższym przykładzie użyto gcnew, aby utworzyć typ wartości spakowanej do użytku w taki sam sposób, jak typ odwołania.
// 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;
}
Dane wyjściowe