1년전쯤에 생각해보다가 관뒀는데 다시 필요하게 됐네요.
구체적으로 무슨 뜻이냐하면
windows를 기준으로
프로그램간 메모리 공유를 할때 file-mapped memory를 쓰곤하잖아요.
MapViewOfFile 함수를 통해 메모리의 포인터를 구하는데 문제는 이 포인터가
함수를 호출할때마다 달라집니다. 그리고 서로 다른 프로그램에서 같은 객체를 대상으로 MapViewOfFile을 호출해도 서로 다른 포인터가 반환됩니다.
그래서 file-mapped memory내에 해당 메모리의 어떤 지점을 나타내는 포인터를 기억해놓고 사용하는건 안되죠.
대신 오프셋을 사용해서 액세스해야합니다.
문제는 이렇게 오프셋을 사용하면 file-mapped memory에 stl 컨테이너 같은 것들을 할당할 수 없습니다.
얘를들어 vector만 하더라도 메모리의 시작 포인터를 기억해놓고 그걸 바탕으로 iterator도 리턴하고 v[0],v[1] 이런 것들의 포인터도 계산하죠.