码迷,mamicode.com
首页 > 其他好文 > 详细

boost::interprocess::managed_shared_memory(2)(std::string)

时间:2014-05-30 12:56:14      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

bubuko.com,布布扣
#include <iostream>
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/containers/string.hpp>
using namespace std;
int main()
{
    //boost::interprocess::shared_memory_object类是按照单个字节的方式读写共享内存,用起来不方便
    boost::interprocess::shared_memory_object::remove("Highscore"); 
    boost::interprocess::managed_shared_memory managed_shm(boost::interprocess::open_or_create, "Highscore", 1024);//分配1024字节
    //boost不能直接写入stl中的vector, map,string等,必须在boost::interprocess提供的另外一个分配器定义对应的数据类型,不是c++缺省的分配器
    //创建一个分配器,内部使用的是"托管共享内存段管理器",段管理器负责管理位于共享内存内部的内存
    typedef boost::interprocess::allocator<char, boost::interprocess::managed_shared_memory::segment_manager> CharAllocator;
    //使用新建的分配器定义string对应的数据类型基于boost::interprocess::basic_stirng,经过分配器访问段管理器
    typedef boost::interprocess::basic_string<char, std::char_traits<char>, CharAllocator> string;
    //find_or_construct创建string实例需要知道那个段管理器被访问,所以段管理器指针作为构造函数的第二个指针
    string* str = managed_shm.find_or_construct<string>("String")("Hello!", managed_shm.get_segment_manager());
    str->insert(5, " world");
    cout << *str << endl;
    getchar();
    return 0;
}
bubuko.com,布布扣

 

boost::interprocess::managed_shared_memory(2)(std::string),布布扣,bubuko.com

boost::interprocess::managed_shared_memory(2)(std::string)

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/zzyoucan/p/3756219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!