Я занимаюсь симуляцией физики, и, поскольку я довольно новичок в программировании, я продолжаю сталкиваться с проблемами при создании больших программ (в основном с памятью). Я знаю о динамическом распределении и удалении памяти (new / delete и т. Д.), Но мне нужен лучший подход к структурированию программы.
Допустим, я моделирую эксперимент, который длится несколько дней с очень большой частотой дискретизации. Мне нужно смоделировать миллиард образцов и выполнить их.
Как упрощенная версия, мы скажем, что программа берет напряжения V [i] и суммирует их в пять:
т.е. NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
тогда NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
затем NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... и это продолжается для миллиарда выборок.
В конце концов, у меня будет V [0], V [1], ..., V [1000000000], тогда как вместо этого единственные, которые мне нужно сохранить для следующего шага, это последние 5 V [i] s.
Как бы я удалил / освободил часть массива, чтобы память снова могла свободно использоваться (скажем, V [0] после первой части примера, где она больше не нужна)? Есть ли альтернативы тому, как структурировать такую программу?
Я слышал о malloc / free, но слышал, что они не должны использоваться в C ++ и что есть лучшие альтернативы.
Огромное спасибо!
tldr; что делать с частями массивов (отдельными элементами), которые мне больше не нужны, которые занимают огромное количество памяти?
V
новом массиве. В целом, однако, я думаю, что ваша проблема заключается либо в ваших алгоритмах, либо в ваших структурах данных, и, поскольку у нас нет никаких деталей, трудно понять, как это сделать эффективно.