boost :: interprocess — allocate_aligned — одинаковое выравнивание гарантировано во всех процессах?

Если я использую allocate_aligned выделить часть выровненной памяти в управляемой разделяемой памяти, гарантируется ли, что это распределение будет иметь такое же выравнивание при совместном использовании в других процессах? Документация проясняет, что базовый адрес может отображаться по-разному, конечно, но это ничего не говорит о выравнивании.

Я провел эксперимент, который, кажется, показывает, что выравнивание такое же, но это может быть просто неудачей, и поэтому я хотел бы получить более надежное подтверждение ожидаемого поведения. (Здравый смысл говорит, что это должно быть то же самое выравнивание, иначе это серьезно ограничило бы полезность allocate_aligned в общей памяти, но мне действительно нужно больше, чем просто обращение к здравому смыслу.)

0

Решение

Да, если вам не нужно больше выравнивания страницы по какой-то странной причине.

Базовый адрес может отображаться по-разному, но такие сопоставления выполняются с гранулярностью страницы. Это подразумевает выравнивание 4K на общих архитектурах.

1

Другие решения

Других решений пока нет …