Saya mengembangkan simulasi fisika, dan karena saya agak baru dalam pemrograman, saya terus mengalami masalah ketika memproduksi program besar (terutama masalah memori). Saya tahu tentang alokasi dan penghapusan memori dinamis (baru / hapus, dll), tetapi saya perlu pendekatan yang lebih baik tentang bagaimana saya menyusun program.
Katakanlah saya mensimulasikan percobaan yang berjalan selama beberapa hari, dengan laju pengambilan sampel yang sangat besar. Saya perlu mensimulasikan satu miliar sampel, dan menabrak mereka.
Sebagai versi yang sangat disederhanakan, kita akan mengatakan sebuah program mengambil tegangan V [i], dan menjumlahkannya dalam lima:
yaitu NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
lalu NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
lalu NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... dan ini berlangsung selama satu miliar sampel.
Pada akhirnya, saya akan memiliki V [0], V [1], ..., V [1000000000], ketika satu-satunya yang saya perlu simpan untuk langkah selanjutnya adalah 5 V terakhir [i] s.
Bagaimana saya menghapus / deallocate bagian dari array sehingga memori bebas untuk menggunakan lagi (mengatakan V [0] setelah bagian pertama dari contoh di mana ia tidak lagi diperlukan)? Apakah ada alternatif untuk bagaimana menyusun program seperti itu?
Saya pernah mendengar tentang malloc / gratis, tetapi mendengar bahwa mereka tidak boleh digunakan dalam C ++ dan bahwa ada alternatif yang lebih baik.
Terima kasih banyak!
tldr; apa yang harus dilakukan dengan bagian array (elemen individual) yang tidak saya perlukan lagi yang menghabiskan banyak memori?
V
bukan dalam array baru. Namun pada dasarnya, saya pikir masalah Anda ada pada algoritme atau struktur data Anda, dan karena kami tidak memiliki detail, sulit untuk mengetahui cara melakukannya secara efisien.