#c #winapi #memory-management
#c #winapi #управление памятью
Вопрос:
В настоящее время я пытаюсь заставить два процесса работать вместе в win32. Есть ли какая-то «новая» функция, которую можно использовать как:
baseAddress = memoryMappedFile->FirstFreePosition();
SharedObject* sharedObject = new(baseAddress) SharedObject()
- Я знаю, что вышесказанное выглядит немного странно, но есть ли
что-то подобное? - Если нет ничего подобного вышеизложенному, означает ли это, что я должен выполнять malloc и free со всеми примитивными типами данных, которые необходимо передавать от процесса к процессу?
Комментарии:
1.
SharedObject* sharedObject = new(baseAddress) SharedObject()
Похоже, вы, возможно, только что изобрели размещениеnew
.2. Спасибо, брат. похоже, сегодня вечером мне будет весело.
3. Обратите внимание, что вам также придется явно вызывать деструктор (т. Е.
delete
Не Будет делать это за вас, вам нужно, напримерsharedObject->~SharedObject()
). Если у вас C 17, в стандартной библиотеке также есть несколько полезных функций, см., Например, uninitialized_default_construct и friends .4. ~ SharedObject() . Я обязательно его вызову. Приветствия.
5. Хотя вы можете совместно использовать память между процессами, вы не можете совместно использовать объекты между процессами.