Je suis en train de développer une simulation physique, et comme je suis plutôt novice en programmation, je continue à rencontrer des problèmes lors de la production de gros programmes (problèmes de mémoire principalement). Je connais l'allocation et la suppression de mémoire dynamique (nouveau / supprimer, etc.), mais j'ai besoin d'une meilleure approche de la façon dont je structure le programme.
Disons que je simule une expérience qui se déroule sur quelques jours, avec un taux d'échantillonnage très élevé. J'aurais besoin de simuler un milliard d'échantillons et de les parcourir.
En version super simplifiée, nous dirons qu'un programme prend les tensions V [i] et les additionne en cinq:
c'est-à-dire NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
alors NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
alors NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... et cela continue pour un milliard d'échantillons.
En fin de compte, j'aurais V [0], V [1], ..., V [1000000000], alors que les seuls que je devrais stocker pour la prochaine étape sont les 5 derniers V [i] s.
Comment supprimer / désallouer une partie du tableau afin que la mémoire soit libre de réutiliser (disons V [0] après la première partie de l'exemple où elle n'est plus nécessaire)? Existe-t-il des alternatives à la structure d'un tel programme?
J'ai entendu parler de malloc / free, mais j'ai entendu qu'ils ne devraient pas être utilisés en C ++ et qu'il existe de meilleures alternatives.
Merci beaucoup!
tldr; que faire des parties de tableaux (éléments individuels) dont je n'ai plus besoin et qui occupent une énorme quantité de mémoire?
V
au lieu de dans un nouveau tableau. Fondamentalement, cependant, je pense que votre problème est lié à vos algorithmes ou à vos structures de données, et comme nous n'avons pas de détails, il est difficile de savoir comment le faire efficacement.