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/detail/config_begin.hpp>
12 #include <boost/interprocess/indexes/null_index.hpp>
13 #include <boost/interprocess/managed_shared_memory.hpp>
14 #include <boost/interprocess/mem_algo/simple_seq_fit.hpp>
15 #include <cstddef>
16 #include <cassert>
17 #include <string>
18 #include "get_process_id_name.hpp"
19 
20 using namespace boost::interprocess;
21 typedef basic_managed_shared_memory
22    <char, simple_seq_fit<mutex_family>, null_index>
23 my_shared_objects_t;
24 
main()25 int main ()
26 {
27    //Create shared memory
28    shared_memory_object::remove(test::get_process_id_name());
29    {
30       my_shared_objects_t segment
31          (create_only,
32          test::get_process_id_name(), //segment name
33          65536);                    //segment size in bytes
34 
35       //Allocate a portion of the segment
36       void * shptr   = segment.allocate(1024/*bytes to allocate*/);
37       my_shared_objects_t::handle_t handle = segment.get_handle_from_address(shptr);
38       if(!segment.belongs_to_segment(shptr)){
39          return 1;
40       }
41       if(shptr != segment.get_address_from_handle(handle)){
42          return 1;
43       }
44 
45       segment.deallocate(shptr);
46    }
47    shared_memory_object::remove(test::get_process_id_name());
48    return 0;
49 }
50 
51 #include <boost/interprocess/detail/config_end.hpp>
52