FreeMode

Define o flag de gerenciamento de memória ao excluir itens da lista.

void  FreeMode(
   bool  mode      // New value
   )

Parâmetros

mode

[in] O novo valor do flag de gerenciamento de memória.

Observação

Definir o flag de gerenciamento de memória - um ponto importante no uso da classe CList. Desde que os elementos da lista são ponteiros para objetos dinâmicos, é importante determinar o que fazer com eles quando remover a partir da lista. Se o flag estiver definido, então remove um item da lista, o item é excluído automaticamente pelo operador "delete". Se o flag não está definido, é assumido que um ponteiro para o objeto excluído ainda está em algum lugar no programa do usuário e será aliviado dele (do programa) então.

Se o usuário resetar o flag de gerenciamento de memória, deve compreender a sua responsabilidade para a remoção dos itens na lista antes da conclusão do programa, porque de outra forma, a memória liberada não é ocupada pelos elementos quando eles criam um novo operador. Se o usuário não resetar o flag de gerenciamento de memória, há um outro "recife", ou seja, grandes quantidades de dados eventualmente poderiam até mesmo quebrar o seu terminal.

Usando ponteiros, itens da lista armazenados em algum lugar das variáveis locais, após a remoção da lista, irá levar a um erro crítico e trava o programa do usuário. Por padrão, o flag de gerenciamento de memória está definido, ou seja, a classe da lista é responsável por liberar os elementos de memória.

Exemplo

//--- example for CList::FreeMode(bool)  
#include <Arrays\List.mqh>  
//---  
void OnStart()  
  {  
   CList *list=new CList;  
   //---  
   if(list==NULL)  
     {  
      printf("Object create error");  
      return;  
     }  
   //--- reset free mode flag  
   list.FreeMode(false);  
   //--- use list  
   //--- . . .  
   //--- delete list  
   delete list;  
  }