Problema ao tentar liberar RAM utilizada pelos ponteiros do EA

 

Olá pessoal! :D

Tudo bem?

 

Estou tendo uma questão pra resolver com relação ao uso de ponteiros.

Criei este EA em anexo e não estou conseguindo liberar o uso da memoria RAM pelos ponteiros presentes nele. Já utilizei delete nos ponteiros e vetores e mesmo assim a RAM continua alocada só aumentando o uso conforme o passar do backtest do EA. Já li toda a documentação de ponteiros pra ver o que eu estaria errando e não encontrei a solução ainda.

 

Alguém pode me dar uma luz do que estou errando e/ou o que posso melhorar pra conseguir liberar a memória acumulada pelos ponteiros do EA?

 

Desde já, muito obrigado pela atenção e ajuda de vcs! :D

Arquivos anexados:
 
Samuel Sant Anna:

Olá pessoal! :D

Tudo bem?

 

Estou tendo uma questão pra resolver com relação ao uso de ponteiros.

Criei este EA em anexo e não estou conseguindo liberar o uso da memoria RAM pelos ponteiros presentes nele. Já utilizei delete nos ponteiros e vetores e mesmo assim a RAM continua alocada só aumentando o uso conforme o passar do backtest do EA. Já li toda a documentação de ponteiros pra ver o que eu estaria errando e não encontrei a solução ainda.

 

Alguém pode me dar uma luz do que estou errando e/ou o que posso melhorar pra conseguir liberar a memória acumulada pelos ponteiros do EA?

 

Desde já, muito obrigado pela atenção e ajuda de vcs! :D

Sugestão, crie uma versão do seu código sinteticamente - talvez com um loop ou algo parecido, para provar o seu caso, e demonstrar realmente que existe um problema no sistema de ponteiros do MQL5.

Ninguém aqui vai ler 1500 linhas de código e tentar resolver o teu problema...

;)

 
Flavio Jarabeck:

Sugestão, crie uma versão do seu código sinteticamente - talvez com um loop ou algo parecido, para provar o seu caso, e demonstrar realmente que existe um problema no sistema de ponteiros do MQL5.

Ninguém aqui vai ler 1500 linhas de código e tentar resolver o teu problema...

;)

Muito obrigado Flávio! :D

Consegui resolver.

Os problemas eram os seguintes:

-Removi o new na declaração global dos ponteiros CArrayObj, pois descobri que isto não é válido quando se deseja liberar a memória RAM várias vezes ao longo do funcionamento do EA, pois globalmente ele é criado de forma estática erradamente, por falta de conhecimento meu, e assim o que era armazenado nele não era possível desalocar da memória RAM.

-Removi os delete internos dos ponteiros globais que eu estava utilizando desesperadamente pra tentar liberar a memória.

-E por fim, encontrei mais um acumulador de memória que encontrei nas funções que atualizam o profit dos arrays buy e sell, substituí o ponteiro global por um local que eu pudesse deletar o mesmo quando ele não precisasse ser adicionado ao vetor (nas situações que precisava apenas atualizar o profit já presente no vetor), assim, eu consegui liberar esta memoria que antes não podia pelo fato de estar utilizando um ponteiro global neste local.

Em anexo o código com as correções realizadas.

Muito obrigado!

Sucesso e bons trades a todos! :D

Arquivos anexados:
Razão: