2012-04-22 62 views
1

我的問題是這樣的:升壓共享內存映射重新連接

爲什麼我的程序不能重新連接到共享內存映射?

我做我的程序如下(這可能是更容易使用從升壓頁面爲您的例子,而這僅是從我的節目一個小片段):

第一次,對其進行初始化:

m_sharedMemory = new managed_shared_memory(create_only, segmentName.c_str() , 1000000); 
m_hashMap = m_sharedMemory->construct<MyHashMap>(segmentName.c_str())(3, boost::hash<std::string>(), std::equal_to<std::string>() , m_sharedMemory->get_allocator<ValueType>()); 

第二次 「重新連接」

​​3210

這裏我的問題是,如果有2個項目插入.second返回的對象查找將顯示「1」這實際上是錯誤的,它應該顯示2,之後如果我的程序試圖找到存儲的地圖中的任何東西該程序崩潰。有人已經這樣做了。

如果我在初始程序運行中做同樣的事情,從哈希查找值是沒有問題的。只有在程序被初始化並且稍後重新啓動程序並執行附加操作並嘗試檢索以前插入的值時纔會發生這種情況。

感謝您的幫助。

Boost Quick Ref Map Example

回答

0

,而我聊到這個庫的「製造者」,他告訴我,這隻會是可以使用的地圖在同一進程中。