FreeMode

Définit le mode de gestion de la mémoire lors de la suppression d'éléments de la listel.

void  FreeMode(
   bool  mode      // Nouvelle valeur
   )

Paramètres

mode

[in] Nouveau mode de gestion de la mémoire.

Note

La gestion de la mémoire est un élément important de la classe CList. Puisque les éléments de la liste sont des pointerus vers des objets, il est important de savoir quoi en faire lorsqu'il est retiré de la liste. Si le mode de gestion de la mémoire est activé, l'élément enlevé de la liste est alors automatiquement supprimé par un appel à l'opérateur delete. Si le mode de gestion de la mémoire n'est pas activé, le pointeur existe toujours lorsque l'élément est enlevé de la liste et c'est au programme de se charger de le supprimer et de libérer la mémoire.

Si le mode de gestion de la mémoire est réinitialisé, le programmeur doit prendre la responsabilité de la suppression des éléments de la liste avant la fin du programme pour libérer la mémoire utilisée lors de la création de l'élément avec l'opérateur new. Avec de gros volumes de données, ceci peut empêcher votre terminal de fonctionner.

Si le mode de gestion de la mémoire n'est pas réinitialisé, un autre risque subsiste. Avec les listes de pointeurs, les éléments sont stockés sous forme de variables locales. Après la suppression de la liste, ne pas supprimer ces variables peut provoquer des erreurs critiques et des crashs du programme. Par défaut, le mode de gestion de la mémoire est activé, la classe de la liste est responsable de la libération de la mémoire de ses éléments.

Exemple :

//--- exemple d'utilisation de CList::FreeMode(bool)  
#include <Arrays\List.mqh>  
//---  
void OnStart()  
  {  
   CList *list=new CList;  
   //---  
   if(list==NULL)  
     {  
      printf("Object create error");  
      return;  
     }  
   //--- réinitialise le flag du mode de suppression
   list.FreeMode(false);  
   //--- utilisation de la liste  
   //--- . . .  
   //--- supprime la liste  
   delete list;  
  }