我有一个
std::map<std::string, myClass*> myMap
然后我插入如下:
if(!myKey.empty())
{
myMap[myKey] = this;
}
这有时会引发分段错误。
为什么?
答案 0 :(得分:1)
也许你的myMap不再可访问了。例如,它可能是对已删除指针的已删除指针的成员变量的引用,或者更可能是:
class MyClass {
public:
selfInsert(std::string myKey) {
if(!myKey.empty()) {
myMap[myKey] = this;
}
}
private:
std::map<std::string, myClass*> myMap;
}
int main()
{
MyClass *a = new MyClass();
delete a;
a->selfInsert();
}