私は物理シミュレーションを開発していますが、プログラミングが初めてなので、大規模なプログラムを作成するときに問題が発生し続けます(主にメモリの問題)。動的メモリの割り当てと削除(新規/削除など)については知っていますが、プログラムをどのように構成するかについて、より良いアプローチが必要です。
非常に大きなサンプリングレートで、数日間実行されている実験をシミュレートしているとしましょう。10億個のサンプルをシミュレートし、それらを実行する必要があります。
非常に単純化されたバージョンとして、プログラムは電圧V [i]を取り、それらを5で合計すると言います。
すなわち、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] ...そして、これは10億個のサンプルで続きます。
最終的には、V [0]、V [1]、...、V [1000000000]になります。代わりに、次のステップで保存する必要があるのは最後の5 V [i]だけですs。
メモリが再び自由に使用できるように、配列の一部を削除/割り当て解除するにはどうすればよいですか(例の最初の部分が不要になった後のV [0]など)?そのようなプログラムを構成する方法に代わるものはありますか?
malloc / freeについて聞いたことがありますが、C ++で使用すべきではなく、より良い代替手段があると聞きました。
どうもありがとう!
tldr; 配列の一部(個々の要素)をどうすればいいですか?
V
新しい配列ではなくステップを保存することもできます。基本的には、あなたの問題はあなたのアルゴリズムまたはデータ構造のいずれかにあると思います。詳細が分からないので、それを効率的に行う方法を知るのは難しいです。