在内存映射文件中提升c ++偏移指针

时间:2018-03-09 06:57:13

标签: c++ boost memory-mapped-files interprocess

我想实现一个内存映射文件。 参考:http://www.boost.org/doc/libs/1_66_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_file!我现在了解内存映射文件和实现的基础知识。但是我无法通过内存映射文件找到偏移指针的使用示例。任何人都可以对此有所了解并尽可能提供小代码片段吗?

1 个答案:

答案 0 :(得分:1)

  1. 只有将具有指针对象的对象放在共享内存中时才需要使用偏移指针。

  2. 例如:如果将以下结构放在共享内存中,那么您可能无法访问进程中的第二个原始指针成员(谁没有创建它),因为每个进程的虚拟地址都不同。 / p>

    struct example     {      int a,      int * b,      漂浮c     };

  3. 解决方案 - 要在不同进程中使用该结构,可以使用offset_ptr替换第二个成员。

    struct example {int a,offset_ptr b,int c};

  4. 参考:your process crashes, because AppComponentFactory will not be working until the next developer preview