doc_shared_ptr_explicit.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 57 行

CPP
57
字号
////////////////////////////////////////////////////////////////////////////////// (C) Copyright Ion Gaztanaga 2006-2007.// Distributed under the Boost Software License, Version 1.0.// (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)//// See http://www.boost.org/libs/interprocess for documentation.////////////////////////////////////////////////////////////////////////////////#include <boost/interprocess/detail/config_begin.hpp>#include <boost/interprocess/detail/workaround.hpp>//[doc_shared_ptr_explicit#include <boost/interprocess/managed_shared_memory.hpp>#include <boost/interprocess/smart_ptr/shared_ptr.hpp>#include <boost/interprocess/allocators/allocator.hpp>#include <boost/interprocess/smart_ptr/deleter.hpp>#include <cassert>using namespace boost::interprocess;//This is type of the object we want to shareclass MyType{};typedef managed_shared_memory::segment_manager segment_manager_type;typedef allocator<void, segment_manager_type>  void_allocator_type;typedef deleter<MyType, segment_manager_type>  deleter_type;typedef shared_ptr<MyType, void_allocator_type, deleter_type> my_shared_ptr;int main (){   //Destroy any previous segment with the name to be used.   shared_memory_object::remove("MySharedMemory");   managed_shared_memory segment(create_only, "MySharedMemory", 4096);      //Create a shared pointer in shared memory   //pointing to a newly created object in the segment   my_shared_ptr &shared_ptr_instance =      *segment.construct<my_shared_ptr>("shared ptr")         //Arguments to construct the shared pointer         ( segment.construct<MyType>("object to share")()      //object to own         , void_allocator_type(segment.get_segment_manager())  //allocator         , deleter_type(segment.get_segment_manager())         //deleter         );   assert(shared_ptr_instance.use_count() == 1);   //Destroy "shared ptr". "object to share" will be automatically destroyed   segment.destroy_ptr(&shared_ptr_instance);   shared_memory_object::remove("MySharedMemory");   return 0;}//]#include <boost/interprocess/detail/config_end.hpp>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?