Crear un vector de memoria compartida de cadenas

Estoy tratando de crear una clase que administre un vector de memoria compartida de cadenas (estándar).

typedef boost::interprocess::allocator<std::string, boost::interprocess::managed_shared_memory::segment_manager> shmem_allocator;
typedef boost::interprocess::vector<std::string, shmem_allocator> shmem_vector;

shmem_mgr::shmem_mgr() :
    shmem_(create_only, SHMEM_KEY, SHMEM_SIZE),
    allocator_(shmem_.get_segment_manager())
{
    mutex_  = shmem_.find_or_construct<interprocess_mutex>(SHMEM_MUTEX)();
    condition_ = shmem_.find_or_construct<interprocess_condition>(SHMEM_CONDITION)();
    //buffer_ is of type shmem_vector
    buffer_  = shmem_.construct<shmem_vector>(SHMEM_BUFFER_KEY)(allocator_);
}

void shmem_mgr::run() {
    running_ = true;

    while(running_) {
        scoped_lock<interprocess_mutex> lock ( *mutex_ );

        int size = buffer_->size();

        log_.debug() << size << " queued request(s) found" << std::endl; //LINE 27
        for(int i=0; i<size; i++) {
            log_.debug() << buffer_->at(i); // at() crashes my app
        }

        buffer_->clear(); //so does clear()
        condition_->wait (lock);
    }
}

El cliente agrega con éxito una cadena al vector (también logra leer esa cadena del búfer para la depuración), el administrador (código anterior) recibe la señal (variable condtion), escribe que hay una cadena en el vector (línea 27). ), pero cuando intenta obtener esa cadena a través deat() la aplicación se bloquea.

Editar: Me he dado cuenta, que el uso destd::string no es posible, hay unstring Contenedor en boost ipc solo para este caso. Esto no cambia el hecho de que necesito un vector de cadenas (boost / std) ...

Q: ¿Cómo puedo pasar cadenas a través de la memoria compartida? Necesito almacenarlos en algún búfer (capaz de almacenar> 1 a la vez) en shmem, y luego buscar el segundo proceso, ese es el requisito. La entrada es siemprestd::string y así es la salida, pero la representación interna en shmem puede ser diferente.

Respuestas a la pregunta(3)

Su respuesta a la pregunta