2011-08-16 48 views
7

我想使用一個類似mmap的段來分配stl容器上的對象,爲此我使用boost :: interprocess它提供了內存映射,分配器和匿名內存映射支持。
thisboost ::內部進程內存分配器匿名段

我的問題有點在於anonymous_shared_memory功能here回報的東西,看起來一半映射文件和半共享內存(是有道理的使用mmap :)),雖然這兩種風格與interprocess allocators工作這一個看起來像它的缺失執行實際塊分配的segment_manager。
由於它返回已在過程中映射的高層次mapped_region,但沒有管理員,也無法看到要掛鉤的segment_manager

+0

如果'anonymous_shared_memory'不符合協議進程分配器的期望,這聽起來像一個錯誤。我建議你嘗試報告它。 –

回答

3

A mapped_region是一個低級到中等級別的對象,並且字面上僅代表內存。 Managed shared memory,然而

是一種先進的類,它結合一個共享內存對象和覆蓋所有的共享內存對象映射區域,

所以它是管理存儲器具備segment_manager

既然你想使用anonymous_shared_memory,首先你會得到memory_region按例子,那麼你可以使用放置new把一個segment_manager在它。它的constructor採用它正在構建的內存段的大小。我不知道這是否包含管理器的大小,儘管我懷疑它包含在內。

+0

@Arkaitz,你試過了嗎?你想讓我爲它編一些代碼嗎? – rcollyer

+0

請做;這將是有益的! –

+0

@EiyrioüvonKauyf自從我看了這篇文章已經很長時間了,所以如果我不在這個週末發佈代碼,請再次戳我。 – rcollyer