Hi, I am trying to create a shared memory segment where I can share a STRING between 2 process, I tried using the following code:

In the "main" process:

#include <boost/interprocess/managed_shared_memory.hpp>

#include <boost/interprocess/containers/vector.hpp>

#include <boost/interprocess/allocators/allocator.hpp>

#include <cstdlib>

#include <string>

#include <iostream>


using namespace boost::interprocess;


typedef allocator<std::string, managed_shared_memory::segment_manager> ShMemAllocator;

typedef vector<std::string, ShMemAllocator> MyVector;



int main(int argc, char** argv) {

    struct shm_remove {

        shm_remove() {shared_memory_object::remove("MySharedMemory"); }

        ~shm_remove() {shared_memory_object::remove("MySharedMemory"); }

    }remover;


    managed_shared_memory segment(create_only, "MySharedMemory", 65536);


    const ShMemAllocator alloc_inst(segment.get_segment_manager());


    MyVector *myVector = segment.construct<MyVector>("MyVector")(alloc_inst);


        myVector->push_back("a");


    int stop; //this line helps me wait until i run the other process

    std::cin >> stop;


    return (EXIT_SUCCESS);

}



at the "client" process:

#include <boost/interprocess/managed_shared_memory.hpp>

#include <boost/interprocess/containers/vector.hpp>

#include <boost/interprocess/allocators/allocator.hpp>

#include <cstdlib>

#include <string>

#include <iostream>

using namespace boost::interprocess;



typedef allocator<std::string, managed_shared_memory::segment_manager> ShMemAllocator;

typedef vector<std::string, ShMemAllocator> MyVector;



int main(int argc, char** argv) {

    managed_shared_memory segment(open_only, "MySharedMemory");



    MyVector *myVector = segment.find<MyVector>("MyVector").first;

     std::cout << "myVector size: " << myVector->at(0) << std::endl;   


    return (EXIT_SUCCESS);

}



When I run both I receive an error "Segmentation Fault, Core Dumped"...

Does anyone know how to solve this?


Thanks


Dann