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