Rozwijam symulację fizyki, a ponieważ jestem raczej nowy w programowaniu, ciągle napotykam problemy podczas tworzenia dużych programów (głównie problemy z pamięcią). Wiem o dynamicznym przydzielaniu i usuwaniu pamięci (nowe / usuwanie itp.), Ale potrzebuję lepszego podejścia do struktury programu.
Powiedzmy, że symuluję eksperyment, który trwa kilka dni, z bardzo dużą częstotliwością próbkowania. Musiałbym zasymulować miliard próbek i przejrzeć je.
W wersji super uproszczonej powiemy, że program pobiera napięcia V [i] i sumuje je w piątki:
tj. Nowe V [0] = V [0] + V [1] + V [2] + V [3] + V [4]
następnie NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
następnie NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... i to trwa w przypadku miliarda próbek.
Na koniec miałbym V [0], V [1], ..., V [1000000000], gdy zamiast tego jedyne, które musiałbym zapisać na następny krok, to ostatnie 5 V [i] s.
Jak mam usunąć / cofnąć przydział części tablicy, aby pamięć mogła ponownie użyć (powiedz V [0] po pierwszej części przykładu, gdzie nie jest już potrzebna)? Czy istnieją alternatywy dla struktury takiego programu?
Słyszałem o malloc / free, ale słyszałem, że nie należy ich używać w C ++ i że istnieją lepsze alternatywy.
Dziękuję bardzo!
tldr; co zrobić z częściami tablic (pojedynczymi elementami), których już nie potrzebuję, które zajmują ogromną ilość pamięci?
V
zamiast w nowej tablicy. Zasadniczo jednak myślę, że twój problem dotyczy algorytmów lub struktur danych, a ponieważ nie mamy żadnych szczegółów, trudno jest wiedzieć, jak to zrobić skutecznie.