我正在尝试使用类似mmap的段来分配stl容器上的对象,因为我正在使用boost :: interprocess,它提供内存映射,分配器和匿名内存映射支持。
有点像this
我的问题是anonymous_shared_memory
函数here返回的内容看起来是一半映射文件和一半共享内存(mmap有意义:))虽然这两种样式都适用于interprocess allocators这个一个看起来像缺少一个执行实际块分配的segment_manager
因为它返回一个已在流程中映射的高级mapped_region
,但没有经理,也没办法让我看到挂钩segment_manager
。
答案 0 :(得分:3)
mapped_region
是一个低级到中级的对象,字面上只代表内存。 Managed shared memory但是
是一个高级类,它结合了共享内存对象和覆盖所有共享内存对象的映射区域
因此托管内存拥有segment_manager
。
鉴于您要使用anonymous_shared_memory
,首先根据示例获得memory_region
,然后您将使用展示位置new
将segment_manager
置于the beginning它。它的constructor占用了它正在构造的内存段的大小。我不知道这是否包括管理器的大小,虽然我怀疑它是包含的。