ref new, gcnew (C++/CLI et C++/CX)
Le mot clé d’agrégation ref new alloue une instance d’un type récupéré par le garbage collector quand l’objet devient inaccessible, et qui renvoie un handle (^) à l’objet alloué.
Tous les runtimes
La mémoire d’une instance d’un type alloué par ref new est automatiquement désallouée.
Une opération ref new lève une exception OutOfMemoryException
s’il est impossible d’allouer de la mémoire.
Pour plus d’informations sur l’allocation et la désallocation de la mémoire pour les types C++ natifs, consultez les opérateurs new et delete.
Windows Runtime
Utilisez ref new pour allouer de la mémoire aux objets Windows Runtime dont vous voulez administrer automatiquement la durée de vie. L'objet est automatiquement désalloué quand son nombre de références atteint zéro, ce qui se produit une fois que la dernière copie de la référence est hors de portée. Pour plus d’informations, consultez Classes et structures de référence.
Spécifications
Option du compilateur : /ZW
Common Language Runtime
La mémoire d’un type managé (type référence ou valeur) est allouée par gcnew, puis désallouée à l’aide du garbage collection.
Spécifications
Option du compilateur : /clr
Exemples
L’exemple suivant utilise gcnew pour allouer un objet 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;
//...
}
L’exemple suivant utilise gcnew pour créer un type valeur boxed à utiliser comme type référence.
// 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