我有以下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
我错过了什么吗?
答案 0 :(得分:2)
你需要做
myMap = boost::shared_ptr< map<uint32, managed_shared_memory*> > (new map<uint32, managed_shared_memory*> );
在使用共享指针添加到地图之前为其分配内存。您收到此错误是因为myMap在概念上与空指针相同,直到您为其分配内存。