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