开发者

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 mappi开发者_如何学Pythonng 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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜