저는 (realloc, tcmalloc) 동적 배열 (약 2-4 억 배)을 매우 빠르게 커졌습니다. 성장이 끝나면 두 개의 서로 다른 응용 프로그램간에이 배열을 공유하고 싶습니다. 공유 메모리 영역을 준비하고 풀 어레이를 복사하는 방법을 알고 있지만, 소스와 공유 대상 배열을 같은 순간에 유지해야하기 때문에 이것은 메모리에 너무 기발한 것입니다. 복사하지 않고 POSIX 모델 내에서 이미 존재하는 동적 배열을 공유 할 수 있습니까?Linux POSIX 모델 내에서 C 언어로 기존 동적 배열을 공유하는 방법은 무엇입니까?
편집 :
약간의 설명.
POSIX 모델 (shm_open() 및 기타) 내에서 메모리 할당을 사용할 수 있지만 그렇게 할 경우 이미 공유 메모리 세그먼트를 여러 번 다시 할당해야합니다 (데이터베이스에서 행으로 숫자를 메모리로 읽음). 간단한 realloc()과 비교할 때 오버 헤드가 훨씬 더 큽니다.
데이터베이스에서 읽고 공유 메모리에 기록하는 한 명의 제작자가 있습니다.
얼마나 많은 레코드가 데이터베이스에 있는지 알 수 없으므로 할당 전에 공유 배열의 크기를 알 수 없습니다. 이런 이유로 프로듀서가 데이터베이스에서 행 단위로 읽는 동안 큰 배열을 재 할당해야합니다. 메모리가 공유되고 채워지면 다른 응용 프로그램이 공유 배열에서 데이터를 읽습니다. 때때로이 큰 공유 배열의 크기를 변경하고 새로운 데이터로 보충 할 수 있습니다.
*에 * 대한 컴퓨터의 메모리는 모두 무엇입니까? –
DB에서받은 수학 계산을위한 약 20 억 (배)의 배열. –
16GB 또는 32GB RAM의 가격은 얼마입니까? RAM을 적게 사용하려면 코드를 작성하는 데 얼마의 비용이 듭니까? –