Sto sviluppando una simulazione fisica e, dato che sono piuttosto nuovo alla programmazione, continuo a riscontrare problemi nella produzione di programmi di grandi dimensioni (principalmente problemi di memoria). Conosco l'allocazione e l'eliminazione della memoria dinamica (nuovo / cancella, ecc.), Ma ho bisogno di un approccio migliore per strutturare il programma.
Diciamo che sto simulando un esperimento in esecuzione per alcuni giorni, con una frequenza di campionamento molto ampia. Dovrei simulare un miliardo di campioni e analizzarli.
Come versione super semplificata, diremo che un programma prende tensioni V [i] e le somma in cinque:
vale a dire. NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
then NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
then NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... e questo va avanti per un miliardo di campioni.
Alla fine, avrei V [0], V [1], ..., V [1000000000], quando invece gli unici che avrei bisogno di memorizzare per il prossimo passo sono gli ultimi 5 V [è.
Come faccio a eliminare / deallocare parte dell'array in modo che la memoria sia di nuovo libera da usare (diciamo V [0] dopo la prima parte dell'esempio dove non è più necessario)? Esistono alternative a come strutturare un programma di questo tipo?
Ho sentito parlare di malloc / free, ma ho sentito che non dovrebbero essere usati in C ++ e che ci sono alternative migliori.
Grazie mille!
TLDR; cosa devo fare con le parti di array (elementi individuali) Non ho più bisogno di occuparmi di un'enorme quantità di memoria?