FreeMode

Define o flag de gerenciamento de memória.

void  FreeMode(
   bool  mode      // New flag
   )

Parâmetros

mode

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

Valor do Retorno

Nenhum.

Observação

Definir o flag de gerenciamento de memória - um ponto importante no uso da classe CArrayObj. Desde que os elementos do array são ponteiros para objetos dinâmicos, é importante determinar o que fazer com eles quando remover o array.

Se o flag estiver definido, remove um elemento a partir do array, o elemento é automaticamente excluído 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 do array 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 e array armazenados em algum lugar das variáveis locais, após a remoção do array 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 do array é responsável por liberar os elementos de memória.

Exemplo

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