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()25int 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