Limpar Array Estatico ou tirar o erro que tenho de array fora de range.

Para adicionar comentários, por favor Faça o login ou registrar
Maylon Sales
181
Maylon Sales  

Bom dia .

Como faço para limpar o buffer de um array Estático ? 

E porque quando executo o código a baixo da erro de array fora de range no UpFractal_1 ? 

Para tirar esse erro eu defini o arrei como Estatico ->  double UpFractal_1[10];

Porem agora preciso limpar o baffer do UpFractal_1 mas a função ArrayFree() Somente limpa os array Dinâmicos.

Por favor me ajudem. 

for(i=0;i<3;i++)
        {
         for(; n<Bars(_Symbol,_Period); n++)
           {

            if(FractalUp[n]!=EMPTY_VALUE)
               break;
           }
         UpFractal_1[i]=FractalUp[n];
         n++;
        }
eduardobasilio
20
eduardobasilio  

Olá, Maylon Sales.

Talvez já tenha resolvido o problema. Eu acho que uma possível solução seria vc deixar a array UpFractal_1 como dinâmica, deixando de definir o tamanho dela, mas antes de atribuir valor para qualquer de seus elementos, vc definiria o tamanho da array através do ArrayResize. Eu faria isso antes de entrar no laço for.

Trader_Patinhas
830
Trader_Patinhas  

Oi @Maylon Sales,

No caso de arrays dinâmicos, a função ArrayFree() "limpa o buffer" liberando de volta para o sistema operacional a memória que estava sendo usada para armazenar os elementos desse array.

Já no caso de um array estático, haverá uma quantidade de memória permanentemente alocada para armazenar aquela quantidade de elementos que foi pré-determinada quando vc declarou o array. Por isso não há sentido em se falar em "limpar o buffer" no caso de um array estático.

Por que, exatamente, vc precisa "limpar o buffer" desse array? Se a razão for otimizar o uso da memória, é melhor declará-lo como dinâmico e usar FreeArray() mesmo. 

Quanto ao erro de array fora do range que vc relata, se UpFractal_1 está declarado como estático com tamanho 10 e está sendo indexado com uma variável que fica dentro da faixa de 0 a 2, como no trecho de código que vc mostra, não poderia estar acontecendo esse erro.

O motivo do erro deve ser alguma coisa que não está aparecendo no trecho que vc mostrou. Talvez haja um array dinâmico, ou estático de dimensão menor, declarado localmente com o mesmo nome, ou talvez o erro esteja acontecendo em uma outra linha que não seja essa ... enfim, teria que ver o restante do código pra descobrir a razão desse erro.

Trader_Patinhas
830
Trader_Patinhas  
Agora que vi que a mensagem do OP é de 3 anos atrás e foi "ressuscitada" pelo amigo aí em cima ... bom, vou deixar a resposta aí pq pode ser útil pra alguém.
Para adicionar comentários, por favor Faça o login ou registrar