std :: map中的[]运算符给我分段错误

时间:2012-06-28 21:05:31

标签: c++ stdmap

我有一个

std::map<std::string, myClass*> myMap

然后我插入如下:

if(!myKey.empty())
{
    myMap[myKey] = this;
}

这有时会引发分段错误。

为什么?

1 个答案:

答案 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();
}