• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //////////////////////////////////////////////////////////////////////////////
2 //
3 // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
4 // Software License, Version 1.0. (See accompanying file
5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // See http://www.boost.org/libs/interprocess for documentation.
8 //
9 //////////////////////////////////////////////////////////////////////////////
10 
11 #include <boost/interprocess/indexes/null_index.hpp>
12 #include <boost/interprocess/managed_shared_memory.hpp>
13 #include <boost/interprocess/mem_algo/simple_seq_fit.hpp>
14 #include <cstddef>
15 #include <cassert>
16 #include <string>
17 #include "get_process_id_name.hpp"
18 
19 using namespace boost::interprocess;
20 typedef basic_managed_shared_memory
21    <char, simple_seq_fit<mutex_family>, null_index>
22 my_shared_objects_t;
23 
main()24 int main ()
25 {
26    //Create shared memory
27    shared_memory_object::remove(test::get_process_id_name());
28    {
29       my_shared_objects_t segment
30          (create_only,
31          test::get_process_id_name(), //segment name
32          65536);                    //segment size in bytes
33 
34       //Allocate a portion of the segment
35       void * shptr   = segment.allocate(1024/*bytes to allocate*/);
36       my_shared_objects_t::handle_t handle = segment.get_handle_from_address(shptr);
37       if(!segment.belongs_to_segment(shptr)){
38          return 1;
39       }
40       if(shptr != segment.get_address_from_handle(handle)){
41          return 1;
42       }
43 
44       segment.deallocate(shptr);
45    }
46    shared_memory_object::remove(test::get_process_id_name());
47    return 0;
48 }
49