将boost托管共享内存写入文件

时间:2017-05-15 11:57:18

标签: c++ boost

我希望任何使用boost托管共享内存的专家都可以帮助我。我正在尝试将内存写入文件。我无法用增强示例弄明白。 ¿任何人都可以提供一些例子吗?

感谢。

2 个答案:

答案 0 :(得分:2)

如果你真的需要这个,我一眼就能看到大约两种方法:

  1. 复制

    • 使用序列化/反序列化
    • 或者只是通过在不同的段管理器中构建克隆来复制(显然这次链接到内存映射文件)
  2. 使用Managed External Buffer。托管缓冲区基本上是一个透明内存缓冲区之上的段管理器。您可以决定它是存在于本地进程地址空间,共享内存还是内存映射文件中。

    这是支持的方法,在两者中使用相同的段管理器+段数据布局。

  3. 如果您真的绝望了,可以尝试将完整的共享内存对象按位复制到相同大小的文件中,然后将其打开。这个可能工作IFF managed_mapped_file实现具有完全相同或兼容的segement管理结构,标题和布局。这虽然是一个很长的电话,即使看起来有效,但它最多没有文档记录,因此可能会调用未定义的行为。

答案 1 :(得分:1)

也许您正在寻找mapped_filehttp://www.boost.org/doc/libs/1_63_0/libs/iostreams/doc/classes/mapped_file.html

它是文件的内存映射API,您可以在多个进程中打开同一个文件。