2012-10-06 2 views
2

프로세스간에 공유되는 메모리 풀을 생성 할 수 있습니까? 예를 들어, Win32에서 CreateFileMappingINVALID_HANDLE_VALUE으로 사용하여 메모리 덩어리를 힙으로 사용할 수 있습니까?(Win32) 프로세스 간 힙 공유

은 내가 new/delete 사업자 싶습니다 (또는 malloc/free)는 그 덩어리에서/무료 메모리를 할당 (그리고 그들의 일반적인 힙 관리를 할) 수 있습니다.

감사합니다.

EDIT : 실제 문제는 간단합니다. 지금은 new 연산자를 사용하여 다양한 대규모 구조를 일반적으로 할당하지만, 프로세스가 닫힌 후에도 이러한 구조를 유지하려고합니다. 그래서 거의 유일한 기능을 메인 프로세스가 닫힐 때 메모리를 보유하는 다른 프로세스를 만들고 싶습니다.

는, 나는 주요 과정에서, 대신 프로세스의 힙의 청크를 사용하도록 구조를 할당하는 데 사용하는 new/delete에게, 보조 과정에서 CreateFileMapping와 공유 메모리의 덩어리를 만든 것입니다.

주 프로세스가 다시 실행 된 후에 구조를 복구하려면 매핑 된보기의 다른 시작점이 MapViewOfFile 인 결과를 반영하여 모든 포인터에 고정 된 양을 추가합니다.

+1

예, 파일 매핑 위에 고유 한 힙 관리자를 구현하는 경우 –

+1

동기화를 잊지 마십시오. –

+0

@Roman 제 질문은 정확하게 malloc/new에서 기존 힙 관리 로직을 사용하고 처음부터 구현하지 않는 것입니다. – SemMike

답변

0

감사의 말을 전한 사람들에게 감사드립니다. 내 자신의 질문에 대답

:

내가 공유 메모리를 힙을 포기, 나는 단순히 CreateFileMapping으로 다른 프로세스에 의해 할당 된 공유 메모리 구조의 고정 된 스냅 샷을 저장합니다. 프로세스가 다시 시작될 때 반대 값을 사용합니다. OpenFileMappingMapViewOfFile을 사용합니다.

관련 문제