Я пишу простую оболочку вокруг векторного контейнера boost :: interprocess для реализации кольцевого буфера в общей памяти (shm) для IPC. Предположим, что buf
- это экземпляр RingBuffer
, созданный в shm. Теперь в своем ctor buf
сам выделяет частный boost::interprocess::vector
элемент данных для хранения значений, например m_data
. Мой вопрос: я думаю, что m_data
также следует создавать в общей памяти. Но разве это необходимость?
Что произойдет, если buf
, созданный в самом shm, выделит стандартную память, то есть с помощью new
. Распределяется ли это в куче вызывающего процесса? Я не думаю, что там выделяется buf
, поэтому почему член данных, который является частным для объекта, не находящегося в куче процесса, выделяется там. Я смущен.