![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
OK. Eu não entendo. Você entendeu? Você está certo de que entendeu? Exatamente?
O argumento se resume à seguinte declaração:
...
Não se tratava de uma discussão geral, mas de uma situação relativa a um único posto, e eu expliquei qual era o problema. Ok, não houve nenhuma catástrofe.
Matriz declarada duplo x[268435448];
A mesma matriz na função OnStart().
Também fez uma chamada recursiva com profundidade LONG_MAX.
Sem problemas.
Não usa matrizes estáticas?
se o tamanho da matriz for pequeno, constante e conhecido antecipadamente, a estática é melhor e provavelmente mais rápida.
se o tamanho da matriz for pequeno, constante e conhecido antecipadamente, a estática é melhor e provavelmente mais rápida.
Gostaria de ter uma maneira de obter uma lista de variáveis/arrays estáticas e seus tamanhos. Provavelmente, é necessário um analisador de código como o que é feito aqui.
Acho que uma matriz de fios estática e uma matriz dupla são coisas bem diferentes.
Acho que a tensão estática e a dupla tensão são coisas bem diferentes.
O cordel é essencialmente uma classe interna que consiste em um ponteiro e tamanho int, ou seja, para a matriz dupla ocupará condicionalmente 1,5 vezes menos espaço
Não creio que haja muito sentido em se preocupar com isso, a menos que você tenha matrizes estáticas com milhões de elementos.
Não usar arrays estáticos?
Portanto, existem essencialmente quatro tipos de dados na MQL:
Se deixarmos a pilha para as funções e suas variáveis locais, ficamos com três tipos para trabalhar. Eu pessoalmente acredito (e esta é apenas minha opinião) que os dados definidos com a vida útil automática combinam bem as vantagens dos dois tipos anteriores, sem suas desvantagens. Os dados definidos com apontador automático são tão previsíveis e seguros quanto estáticos, mas tão flexíveis quanto os dados dinâmicos, controlados manualmente. Por previsibilidade quero dizer em cenários onde não há necessidade de fazer verificações adicionais de bit de ponteiro e me pergunto se outra pessoa já apagou os dados antes. Por flexibilidade quero dizer cenários onde se pode trabalhar com dados referenciados por um apontador automático como com um apontador regular, passando o apontador para uma função, ou, para arrays, reciclando-o.
Para ilustrar o que acabo de dizer, você pode comparar o código inicial fornecido por Ihor Herasko e o mesmo código que escrevi para POINTER_AUTOMATIC. Não há verificações e inicializações extras, nenhum operador apaga 60 000 000 vezes. Tudo isso poupa tempo, esforço e, o que também é importante, recursos. Se você o entende, quase nunca precisa trabalhar com apontadores. Você pode sempre escrever tal algoritmo que minimizaria este trabalho ou que permaneceria de forma alguma. Por exemplo, eu nunca manusejo objetos manualmente em meu código - não há necessidade disso de alguma forma. Quanto às matrizes estáticas, às vezes tenho que usar, por exemplo, para costurar no programa os dados que ele precisa, mas são coisas tão especiais, que os usuários comuns, presumo, não precisam deles. É melhor usar coleções prontas como CArrayObj, ou as suas próprias coleções. Agora os modelos e capacidades MQL permitem criar coisas bastante flexíveis que são muito melhores do que matrizes estáticas.
Vasiliy Sokolov #:
Dados estáticos, pré-definidos. Cosido no programa em tempo de compilação e não mais modificado. Eles são armazenados em alguma área de memória privada. Por exemplo, estas são matrizes estáticas do tipo char[1024].
Se a matriz não for inicializada,
por que deve ser escrito no EX5?
Se a matriz não for rubricada,
por que deve ser costurado no EX5?
Sim, isso mesmo, os não inicializados não são costurados, é claro. Os inicializados sim. Mas os tamanhos de ambos os tipos são definidos no momento da compilação e não mudam mais. Ou seja, as matrizes estáticas podem ser divididas condicionalmente em dois grupos.
Não há coletor de lixo no emcool.
Oficialmente, sim. Extra-oficialmente, muitas coisas indicam que ela existe: