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?
Vvez 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.