Можно ли создать общий пул памяти между процессами (например, из CreateFileMapping с INVALID_HANDLE_VALUE в Win32), а затем использовать этот кусок памяти как кучу?
Я хотел бы, чтобы операторы new/delete (или malloc/free) выделяли/освобождали память из этого фрагмента (и выполняли на нем свое обычное управление кучей).
Спасибо.
EDIT: Моя реальная проблема проста: сейчас я использую оператор new для нормального выделения различных больших серий структур, но я хочу, чтобы эти структуры сохранялись после закрытия процесса. Поэтому я хотел бы создать еще один процесс, почти единственная функция которого — удерживать память при закрытии основного процесса.
Для этого я бы создал кусок общей памяти с CreateFileMapping во вспомогательном процессе, а в основном процессе сказал бы тем new/delete, которые используются для выделения структур, использовать этот кусок вместо кучи процесса.
Чтобы восстановить структуры после перезапуска основных процессов, я бы добавил фиксированную сумму ко всем указателям, отражающим различные источники сопоставленного представления, возвращаемого MapViewOfFile.
newпри перезапуске вашего процесса не приведет к тому, что память будет иметь те же значения, что и при закрытии процесса. Ваша проблема связана с сериализацией, а не с совместным использованием. - person David Heffernan   schedule 06.10.2012new, так как структуры данных управления кучей потеряны, поэтому он не знает, какие части существующей памяти уже выделены, и какие части свободны. Таким образом, мне пришлось бы сохранить весь пул памяти, используемый этой частной кучей, включая структуры данных кучи, но тогда структуры данных кучи будут содержать старые указатели, и я не могу добавить фиксированную сумму к этим указателям, не зная, как эти организованы структуры кучи... Поэтому сохранение моментального снимка кучи кажется сложным. - person SemMike   schedule 06.10.2012