私は
std::map<std::string, myClass*> myMap
それから私は次のように挿入しています:
if(!myKey.empty())
{
myMap[myKey] = this;
}
これはいつかセグメンテーション違反を投げています。
なぜ??
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();
}