История изменений
Исправление witaway, (текущая версия) :
Placement new ведь просто создаст объект в указанной памяти.
Однако, если внутри контейнера будет выделяться ещё память, указатели будут уже указывать на нерасшаренные её сегменты, вроде?
Причём в стандарте нет гарантий о внутреннем представлении контейнера std::array в памяти. Вроде даже если будет работать, то лишь как частный случай.
По идее, во все STL-контейнеры можно передавать кастомные аллокаторы. Можно написать такой, чтобы выделял память в shmem. Но я не уверен, будут ли даже эти указатели актуальны в другом процессе…
Можно ещё сделать свою структуру данных, оптимизированную под расшаривание.
Можно ещё посмотреть, как работает Boost::Interprocess. У них есть свои какие-то готовые решения поднятой в топике проблемы.
Исходная версия witaway, :
Placement new ведь просто создаст объект в указанной памяти.
Однако, если внутри контейнера будет выделяться ещё память, указатели будут уже указывать на нерасшаренные её сегменты.
А в стандарте нет гарантий о внутреннем представлении контейнера std::array в памяти. Вроде даже если будет работать, то лишь как частный случай.
По идее, во все STL-контейнеры можно передавать кастомные аллокаторы. Но я не уверен, даст ли это нужные гарантии и бедут ли эти указатели актуальны в другом процессе…
Можно ещё сделать свою структуру данных, оптимизированную под расшаривание.
Можно ещё посмотреть, как работает Boost::Interprocess. У них есть свои какие-то готовые решения поднятой в топике проблемы.