插入boost :: interprocess :: map

时间:2014-10-24 08:45:56

标签: c++ boost boost-interprocess

我有以下boost::interprocess::map

using boost::interprocess;  
std::shared_ptr< map<uint32, managed_shared_memory*> > myMap;

我有一个插入此地图的方法():

void InsertInMap(uint32 i)
{
    myMap->insert( std::make_pair (i,                       // runtime error here
               new managed_shared_memory(create_only, "Test", 256)) );    

}

main()中,我称之为:

int main()
{
    InsertInMap(1);
}

编译好。

但是当我运行程序时,我在标记行(插入时)出现以下运行时错误:

memory access violation occurred at address ......, while attempting to read inaccessible data

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

你需要做

myMap = boost::shared_ptr< map<uint32, managed_shared_memory*> > (new map<uint32, managed_shared_memory*> );

在使用共享指针添加到地图之前为其分配内存。您收到此错误是因为myMap在概念上与空指针相同,直到您为其分配内存。