물리 시뮬레이션을 개발 중이며 프로그래밍에 익숙하지 않아서 큰 프로그램 (주로 메모리 문제)을 생성 할 때 계속 문제가 발생합니다. 동적 메모리 할당 및 삭제 (신규 / 삭제 등)에 대해 알고 있지만 프로그램을 구성하는 방법에 대한 더 나은 접근 방식이 필요합니다.
매우 빠른 샘플링 속도로 며칠 동안 실행되는 실험을 시뮬레이션한다고 가정 해 봅시다. 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]을 가지게되는데, 대신 다음 단계를 위해 저장해야 할 유일한 것이 마지막 5V [i] 일 때 에스.
메모리를 다시 자유롭게 사용할 수 있도록 배열의 일부 를 삭제 / 할당 해제하려면 어떻게해야합니까 (예를 들어 더 이상 필요하지 않은 예제의 첫 부분 다음에 V [0])? 그러한 프로그램을 구성하는 방법에 대한 대안이 있습니까?
malloc / free에 대해 들었지만 C ++에서 사용해서는 안되며 더 나은 대안이 있다고 들었습니다.
매우 감사합니다!
tldr; 배열 (개별 요소)의 일부로 무엇을해야합니까? 더 많은 메모리를 차지하는 더 이상 필요하지 않습니까?
V
새로운 배열 대신 단계를 저장할 수도 있습니다 . 그러나 기본적으로 귀하의 문제는 알고리즘 또는 데이터 구조에 있다고 생각되며 세부 정보가 없으므로 효율적으로 수행하는 방법을 알기가 어렵습니다.