Boost logo

Boost Users :

Subject: [Boost-users] boost shared memory vector objetc
From: Olivier Austina (olivier.austina_at_[hidden])
Date: 2012-12-02 02:20:22


Hello,

Please can somebody help me on this code (from boost site). I try to run
it but I still get the following error:

*/cygdrive/C/Program Files/NetBeans 7.1.2/ide/bin/nativeexecution/dorun.sh:
line
33: 12900 Segmentation fault (core dumped) sh "${SHFILE}"
Press [Enter] to close the terminal ...*

This is the code for creating vector in shared memory:

#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/containers/vector.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <string>
#include <cstdlib> //std::system

using namespace boost::interprocess;

//Define an STL compatible allocator of ints that allocates from the
managed_shared_memory.
//This allocator will allow placing containers in the segment
typedef allocator<int, managed_shared_memory::segment_manager>
ShmemAllocator;

//Alias a vector that uses the previous STL-like allocator so that allocates
//its values from the segment
typedef vector<int, ShmemAllocator> MyVector;

//Main function. For parent process argc == 1, for child process argc == 2
int main(int argc, char *argv[])
{
   if(argc == 1){ //Parent process
      //Remove shared memory on construction and destruction
      struct shm_remove
      {
         shm_remove() { shared_memory_object::remove("MySharedMemory"); }
         ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
      } remover;

      //Create a new segment with given name and size
      managed_shared_memory segment(create_only, "MySharedMemory", 65536);

      //Initialize shared memory STL-compatible allocator
      const ShmemAllocator alloc_inst (segment.get_segment_manager());

      //Construct a vector named "MyVector" in shared memory with argument
alloc_inst
      *MyVector *myvector =
segment.construct<MyVector>("MyVector")(alloc_inst);*
 * ;*

   }
   else{
       // some code
   }

   return 0;
};

I got an error for this instruction: *MyVector *myvector =
segment.construct<MyVector>("MyVector")(alloc_inst);
*This addition information about the environnment: NetBeans 7.1.2 with
Cygwin_4.x, gcc-core 3.4.4-999,
gcc-g++ 3.4.4-999,gcc-mingw-core 20050522-3,gcc-mingw-g++
20050522-3 ,gcc4-core 4.5.3-3 ,
gcc4-g++ 4.5.3-3 , gdb 7.5.50-1. I am using Windows XP SP3.

Many thanks.

-- 
Regards
Austina


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net