FreeMode

Establece la bandera de gestión de memoria al borrar elementos de la lista.

void  FreeMode(
   bool  mode      // Valor nuevo
   )

Parámetros

mode

[in] Valor nuevo de la bandera de gestión de memoria.

Nota

Configurar la bandera de gestión de memoria es un aspecto importante en el uso de la clase CList. Dado que los elementos de la lista son punteros a objetos dinámicos es importante determinar qué hacer con ellos al borrarlos de la lista. Si se establece la bandera, al eliminar un elemento de la lista, el elemento se borra automáticamente por medio del operador delete. Si no se establece la bandera, se asume que todavía existe un puntero al objeto eliminado en algún lugar del programa, y el programa lo liberará a continuación.

Si el usuario reinicia la bandera de gestión de memoria, entonces debe entender que tiene que responsabilizarse de la eliminación de los elementos de la lista antes de que finalice el programa, porque de lo contrario, la memoria será ocupada por otros elementos al crear el nuevo operador. Si el usuario no reinicia la bandera de gestión de memoria, se puede incluso estropear el terminal al manejar grandes cantidades de datos.

Almacenar punteros a listas en variables locales después de borrar la lista, dará lugar a errores críticos y bloqueos del programa. De forma predeterminada, queda establecida la bandera de gestión de memoria; la clase de la lista se responsabiliza de liberar la memoria de los elementos.

Ejemplo:

//--- ejemplo de CList::FreeMode(bool)  
#include <Arrays\List.mqh>  
//---  
void OnStart()  
  {  
   CList *list=new CList;  
   //---  
   if(list==NULL)  
     {  
      printf("Error en la creación del objeto");  
      return;  
     }  
   //--- reinicia la bandera  
   list.FreeMode(false);  
   //--- utiliza la lista  
   //--- . . .  
   //--- borra la lista  
   delete list;  
  }