#include #include #include #include #include #include #include #include #include const char file_name[] = "mapped_file"; const std::size_t header_size = 16; const std::size_t storage_size = 4096; // Unsigned offset type doesn't work because of incorrect casts in offset_ptr // typedef boost::interprocess::offset_ptr< void, std::ptrdiff_t, std::uint32_t > void_pointer; typedef boost::interprocess::offset_ptr< void, std::ptrdiff_t, std::int32_t > void_pointer; typedef boost::interprocess::basic_managed_external_buffer< char, boost::interprocess::rbtree_best_fit< boost::interprocess::null_mutex_family, void_pointer >, boost::interprocess::iset_index > managed_external_buffer; int main() { { std::ofstream file(file_name, std::ios::out | std::ios::trunc | std::ios::binary); } truncate(file_name, header_size + storage_size); boost::interprocess::file_mapping file_mapping(file_name, boost::interprocess::read_write); boost::interprocess::mapped_region file_region(file_mapping, boost::interprocess::read_write, header_size, storage_size); managed_external_buffer buffer(boost::interprocess::create_only, file_region.get_address(), file_region.get_size()); return 0; }