匿名段上的进程间内存分配器

boost::interprocess memory allocator on anonymous segment

本文关键字:内存 分配器 进程      更新时间:2023-10-16

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

我的问题是,anonymous_shared_memory函数这里返回的东西看起来一半映射文件和一半共享内存(与mmap有意义:)),虽然这两种风格都与进程间分配器工作,这看起来像它缺少一个segment_manager,它做实际的块分配。
因为它返回一个高层次的mapped_region已经映射到进程中,但没有管理器,也没有办法,我可以看到钩在一个segment_manager

mapped_region是一个低级到中级对象,实际上只表示内存。然而,托管共享内存

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

所以是托管内存拥有segment_manager .

假设你想使用anonymous_shared_memory,首先你会得到memory_region的例子,然后你会使用位置newsegment_manager在它的开始。它的构造函数接受正在构造它的内存段的大小。我不知道这是否包括管理器的大小,尽管我怀疑它包括在内。