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


    #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;
    }
  • 相关阅读:
    实验七:类的多态性
    实验六:类的封装(P105 3-35)
    实验五:任意输入10个int类型数据,排序输出,再找出素数
    第三周学习总结
    hbase对Java的简单操作
    hbase的shell命令
    需求工程3
    需求工程2
    软件需求1
    认识软件需求
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/3756219.html
Copyright © 2020-2023  润新知