boost :: interprocess内存分配器匿名段
我试图使用类似mmap的段来分配stl容器上的对象,因为我使用boost :: interprocess,它提供了内存映射,分配器和匿名内存映射支持。
有点像这样
我的问题是,这里的anonymous_shared_memory
函数返回的东西看起来是半映射文件和半共享内存(对mmap有意义:)),尽管这两种样式都与进程间分配器一起工作,但看起来像缺少实际块分配的segment_manager。
因为它返回已经映射到进程中的高级mapped_region
,但没有管理器,也无法看到在segment_manager
挂钩。
mapped_region
是一个低到中等级别的对象,并且字面上仅表示内存。 但是,托管共享内存
是一个高级类,它将一个共享内存对象和一个覆盖所有共享内存对象的映射区域相结合,
所以它是拥有segment_manager
的托管内存。
考虑到你想使用anonymous_shared_memory
,首先你会得到memory_region
,然后你可以使用placement new
来将segment_manager
放在它的开头。 它的构造函数需要它正在构建的内存段的大小。我不知道这是否包含管理器的大小,尽管我怀疑它包含在内。
上一篇: boost::interprocess memory allocator on anonymous segment