Partager via


ref new, gcnew (extensions du composant C++)

Le mot clé d'agrégat ref new alloue une instance d'un type qui est récupéré par le garbage collector lorsque l'objet est inaccessible et qui retourne un handle (^) à l'objet alloué.

Tous les runtimes

La mémoire pour une instance de type qui est allouée par ref new est libérée automatiquement.

Une opération ref new lève une exception OutOfMemoryException si elle ne peut pas allouer de mémoire.

Pour plus d'informations sur la façon dont la mémoire pour les types natifs C++ est allouée et libérée, consultez les nouveaux opérateurs et les opérateurs de suppression.

Windows Runtime

Utilisez ref new pour allouer de la mémoire aux objets Windows Runtime dont vous souhaitez administrer automatiquement la durée de vie.L'objet est libéré automatiquement lorsque son décompte de références atteint zéro, ce qui se produit lorsque 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.

te3ecsc8.collapse_all(fr-fr,VS.110).gifConfiguration requise

Option du compilateur : /ZW

Common Language Runtime

La mémoire pour un type managé (référence ou type valeur) est allouée par gcnew et libérée en utilisant le garbage collection.

te3ecsc8.collapse_all(fr-fr,VS.110).gifConfiguration requise

Option du compilateur : /clr

te3ecsc8.collapse_all(fr-fr,VS.110).gifExemples

Exemple

L'exemple suivant illustre l'utilisation d'un objet 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;
  //...
}

Exemple

L'exemple suivant utilise gcnew pour créer un type valeur boxed à utiliser comme un 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;
}

Sortie

  

Voir aussi

Concepts

Extensions de composant pour les plateformes Runtime