Olá,
Tentei deletar as memórias alocadas para os inputs de meu indicador, porém tive como retorno valor 0 (falso). Mémorias inputs não são liberáveis?
Grato!
Olá @AnarcoPhysic.
Acredito que o comando GlobalVariableDel seja aplicável somente às variáveis globais do terminal, não sendo aplicável a variáveis do tipo input.
Para confirmar isso, sugiro mandar imprimir o valor da variável _lastError logo após executar o comando GlobalVariableDel . Se o valor exibido for 4501 (ERR_GLOBALVARIABLE_NOT_FOUND), isso significará que meu palpite está certo.
Olá @AnarcoPhysic.
Acredito que o comando GlobalVariableDel seja aplicável somente às variáveis globais do terminal, não sendo aplicável a variáveis do tipo input.
Para confirmar isso, sugiro mandar imprimir o valor da variável _lastError logo após executar o comando GlobalVariableDel . Se o valor exibido for 4501 (ERR_GLOBALVARIABLE_NOT_FOUND), isso significará que meu palpite está certo.
Tinha esperança de que eram variáveis de escopo global do scripit.
São coisas completamente diferentes. As variáveis globais do terminal são aquelas que você lê e altera por meio dos comandos GlobalVariableGet e GlobalVariableSet). Elas são comuns a todos os EA's e scripts que estiverem rodando no terminal.
Não dá para deletar as memórias no stack, certo?
Certo.
Os dados armazenados na memória principal geralmente podem residir em 3 lugares distintos: segmento de dados (variáveis de escopo global), stack (variáveis de escopo local e parâmetros de passagem) e heap (arrays com alocação dinâmica, objetos instanciados e outros bichos dessa fauna).
O segmento de dados e o stack geralmente são pré-alocados em tamanho pré-determinado no momento em que o sistema operacional instancia o processo, de modo que não há como liberar, em tempo de execução, a memória ocupada por variáveis que habitam esses locais.
Só faz sentido "deletar" (no sentido de liberar memória ocupada) as variáveis que residam no heap, que é a única parte da memória consumida que você consegue aumentar ou reduzir ao longo da execução do programa.
Não conheço a arquitetura interna do MT5, mas acredito que as variáveis do tipo input sejam alocadas no stack, que é onde normalmente são alocados os parâmetros de passagem (afinal nada mais são que parâmetros de passagem entre o terminal e o robô), e que as variáveis globais do terminal sejam alocadas no heap (senão não faria sentido existir um comando como GlobalVariableDel ).
Náo faz tanta difetença, faz? Resumindo... É perder tempo, né?
Não faz mesmo. Caso fosse possível "deletá-las", a economia de memória seria insignificante.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Olá,
Tentei deletar as memórias alocadas para os inputs de meu indicador, porém tive como retorno valor 0 (falso). Mémorias inputs não são liberáveis?
Grato!