在我的 ClassA 中,我有一个类变量:
std::map<std::string, ClassB*> classBMap;
在一种方法中,我使用值初始化地图:
ClassA::init()
{
for(int i = 0; i < 5; i++)
{
string tempKey = "key" + to_string(i + 1);
ClassB* b = new ClassB();
classBMap.insert(make_pair(tempKey, b));
}
}
在其他方法中,可以通过更改ClassB *或删除带有ClassB内存释放的条目来访问 classBMap 。
我的问题与字符串, tempKey 键字符串有关。
1. classBMap中的字符串键是tempKey字符串的副本吗?
2。当我从classBMap中删除一个条目时,我应该对字符串键做什么特别的事情吗? (我现在只删除从地图中删除的ClassB指针。)
3. 偶尔,我收到以下错误(所有地图访问代码都受互斥锁保护):
错误读取变量:无法访问地址0x7f94ffffffe7
的内存
在此访问代码中:( it-&gt; first )
std::map<string, ClassB*>::iterator it = classBMap.begin();
while(it != classBMap.end())
{
string idKey = it->first;
...
}
导致此错误的可能原因是什么?