匿名段上的boost :: interprocess内存分配器

时间:2011-08-16 15:26:22

标签: c++ linux boost multiprocessing interprocess

我正在尝试使用类似mmap的段来分配stl容器上的对象,因为我正在使用boost :: interprocess,它提供内存映射,分配器和匿名内存映射支持。
有点像this

我的问题是anonymous_shared_memory函数here返回的内容看起来是一半映射文件和一半共享内存(mmap有意义:))虽然这两种样式都适用于interprocess allocators这个一个看起来像缺少一个执行实际块分配的segment_manager 因为它返回一个已在流程中映射的高级mapped_region,但没有经理,也没办法让我看到挂钩segment_manager

1 个答案:

答案 0 :(得分:3)

mapped_region是一个低级到中级的对象,字面上只代表内存。 Managed shared memory但是

  

是一个高级类,它结合了共享内存对象和覆盖所有共享内存对象的映射区域

因此托管内存拥有segment_manager

鉴于您要使用anonymous_shared_memory,首先根据示例获得memory_region,然后您将使用展示位置newsegment_manager置于the beginning它。它的constructor占用了它正在构造的内存段的大小。我不知道这是否包括管理器的大小,虽然我怀疑它是包含的。