-3

私は

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

それから私は次のように挿入しています:

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

これはいつかセグメンテーション違反を投げています。

なぜ??

4

1 に答える 1

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();
}
于 2012-06-28T21:30:49.247 に答える