boost::interprocess memory allocator on anonymous segment

I'm trying to use an mmap-like segment to allocate objects on stl containers, for that I'm using boost::interprocess which provides with memory mappings, allocators and anonymous memory mapping support.
A bit like this

My problem is that the anonymous_shared_memory function here returns something that looks half mapped file and half shared memory(makes sense with mmap :) ) and although both styles work with interprocess allocators this one looks like its missing a segment_manager which does the actual chunk allocation.
As it returns a high-level mapped_region already mapped in the process but with no manager and no way that I can see to hook in a segment_manager .


A mapped_region is a low to mid-level object, and literally represents just the memory. Managed shared memory, however

is an advanced class that combines a shared memory object and a mapped region that covers all the shared memory object,

so it is the managed memory that possess the segment_manager .

Given that you want to use anonymous_shared_memory , first you'd get the memory_region as per the example, then you would use placement new to put a segment_manager at the beginning of it. Its constructor takes the size of the memory segment that it is being constructed in. I do not know if this includes the size of the manager, although I suspect it is included.

链接地址: http://www.djcxy.com/p/9028.html

上一篇: 如何在使用numpy向量化时避免巨大的额外内存消耗?

下一篇: boost :: interprocess内存分配器匿名段