Estou desenvolvendo uma simulação de física e, como sou um iniciante em programação, continuo tendo problemas ao produzir programas grandes (principalmente problemas de memória). Eu sei sobre alocação e exclusão de memória dinâmica (nova / exclusão, etc.), mas preciso de uma abordagem melhor para estruturar o programa.
Digamos que estou simulando um experimento que está sendo executado por alguns dias, com uma taxa de amostragem muito grande. Eu precisaria simular um bilhão de amostras e atropelar elas.
Como uma versão super simplificada, diremos que um programa utiliza as voltagens V [i] e as soma em cinco:
ie NovoV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
então NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
então NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... e isso se aplica a um bilhão de amostras.
No final, eu teria V [0], V [1], ..., V [1000000000], quando os únicos que eu precisaria armazenar para a próxima etapa são os últimos 5 V [i] s.
Como excluir / desalocar parte da matriz para que a memória fique livre para uso novamente (digamos V [0] após a primeira parte do exemplo, onde ela não é mais necessária)? Existem alternativas para estruturar esse programa?
Eu ouvi falar do malloc / free, mas ouvi dizer que eles não devem ser usados em C ++ e que existem alternativas melhores.
Muito obrigado!
tldr; o que fazer com partes de matrizes (elementos individuais) Eu não preciso mais de uma quantidade enorme de memória?
V
vez de em uma nova matriz. Fundamentalmente, porém, acho que seu problema está em seus algoritmos ou em suas estruturas de dados e, como não temos detalhes, é difícil saber como fazê-lo com eficiência.