FreeMode

Définit le mode de gestion de la mémoire.

void  FreeMode(
   bool  mode      // Nouveau mode
   )

Paramètres

mode

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

Valeur de Retour

Aucune.

Note

La définition du mode de gestion de la mémoire est un point important de l'utilisation de la classe CArrayObj. Puisque les éléments du tableau sont des pointeurs vers des objets, il est important de savoir comment les gérer lorsqu'ils sont enlevés du tableau.

Si le mode est activé, enlever un élément du tableau déclenche sa suppression par un appel à l'opérateur delete. si le mode n'est pas activé, le pointeur vers l'objet existe toujours quelque part dans le programme et doit être libéré par le programme.

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.

Avec de gros volumes de données, cela peut amener à des problèmes d'utilisation du terminal. Il y a également un autre risque.

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 CArrayObj::FreeMode(bool)
#include <Arrays\ArrayObj.mqh>
//---
void OnStart()
  {
   CArrayObj *array=new CArrayObj;
   //---
   if(array==NULL)
     {
      printf("Object create error");
      return;
     }
   //--- réinitialise le flag du mode de suppression
   array.FreeMode(false);
   //--- utilise le tableau
   //--- . . .
   //--- supprime le tableau
   delete array;
  }