Estoy desarrollando una simulación física, y como soy bastante nuevo en programación, sigo teniendo problemas al producir programas grandes (principalmente problemas de memoria). Sé acerca de la asignación y eliminación de memoria dinámica (nuevo / eliminar, etc.), pero necesito un mejor enfoque sobre cómo estructurar el programa.
Digamos que estoy simulando un experimento que se está ejecutando durante unos días, con una frecuencia de muestreo muy grande. Necesitaría simular mil millones de muestras y atropellarlas.
Como una versión súper simplificada, diremos que un programa toma voltajes V [i] y los suma en cinco:
es decir, NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
entonces NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
entonces NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... y esto continúa para mil millones de muestras.
Al final, tendría V [0], V [1], ..., V [1000000000], cuando los únicos que necesitaría almacenar para el siguiente paso son los últimos 5 V [i] s.
¿Cómo eliminaría / desasignaría parte de la matriz para que la memoria se pueda volver a usar (por ejemplo, V [0] después de la primera parte del ejemplo donde ya no es necesaria)? ¿Existen alternativas a cómo estructurar un programa de este tipo?
Escuché sobre malloc / free, pero escuché que no deberían usarse en C ++ y que existen mejores alternativas.
¡Muchas gracias!
tldr; ¿Qué hacer con partes de matrices (elementos individuales) que ya no necesito y que ocupan una gran cantidad de memoria?
V
lugar de en una nueva matriz. Sin embargo, fundamentalmente, creo que su problema está en sus algoritmos o en sus estructuras de datos, y como no tenemos ningún detalle, es difícil saber cómo hacerlo de manera eficiente.