Должны ли указатели на отображенные в память файлы быть согласованными между процессами? - PullRequest
0 голосов
/ 08 июля 2019

Я делаю какую-то работу, которая требует межпроцессного взаимодействия.Я создал файл с отображением в памяти, используя CreateFileMapping (используя Windows API) в одном процессе.В другом процессе я использовал OpenFileMapping и MapViewOfFile для доступа (предположительно) к тем же данным.Я обнаружил, что адреса этих данных разные в каждом процессе, это ожидалось, или я сделал что-то не так?

1 Ответ

1 голос
/ 08 июля 2019

Это вполне ожидаемое и нормальное поведение.

Разные процессы имеют разные адресные пространства. Указатель в одном процессе недопустим в другом процессе. Важно то, что каждый процесс получает свой собственный локальный действительный указатель на ваш общий объект сопоставления. Когда каждый процесс хочет получить доступ к данным внутри общего объекта сопоставления, доступ должен быть сделан с использованием указателей и адресов, относящихся к каждому процессу.

Это более подробно описано в собственной документации Microsoft: File Mapping

...