Tôi đang phát triển một mô phỏng vật lý, và vì tôi khá mới mẻ với lập trình, tôi tiếp tục gặp vấn đề khi sản xuất các chương trình lớn (chủ yếu là vấn đề bộ nhớ). Tôi biết về phân bổ và xóa bộ nhớ động (mới / xóa, v.v.), nhưng tôi cần một cách tiếp cận tốt hơn về cách tôi cấu trúc chương trình.
Giả sử tôi đang mô phỏng một thử nghiệm đang chạy trong vài ngày, với tỷ lệ lấy mẫu rất lớn. Tôi cần mô phỏng một tỷ mẫu và chạy qua chúng.
Là một phiên bản siêu đơn giản, chúng tôi sẽ nói rằng một chương trình có điện áp V [i] và tính tổng chúng trong các mệnh đề:
tức là NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
sau đó NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
sau đó NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... và điều này diễn ra trong một tỷ mẫu.
Cuối cùng, tôi có V [0], V [1], ..., V [1000000000], khi thay vào đó, những thứ duy nhất tôi cần lưu trữ cho bước tiếp theo là 5 V cuối cùng [i] S.
Làm thế nào tôi có thể xóa / sắp xếp lại một phần của mảng để bộ nhớ được sử dụng lại miễn phí (giả sử V [0] sau phần đầu tiên của ví dụ khi không còn cần thiết)? Có những lựa chọn thay thế cho cách cấu trúc một chương trình như vậy?
Tôi đã nghe nói về malloc / miễn phí, nhưng nghe nói rằng chúng không nên được sử dụng trong C ++ và có những lựa chọn thay thế tốt hơn.
Cảm ơn rất nhiều!
tldr; Phải làm gì với các phần của mảng (các phần tử riêng lẻ) Tôi không cần nữa mà đang chiếm một lượng lớn bộ nhớ?
V
thay vì trong một mảng mới. Tuy nhiên, về cơ bản, tôi nghĩ vấn đề của bạn là ở thuật toán hoặc cấu trúc dữ liệu của bạn và vì chúng tôi không có bất kỳ chi tiết nào, thật khó để biết cách thực hiện hiệu quả.