2012-06-28 35 views
-3

我有一个[]中的std ::地图运营商是给我段错误

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

那么我将像如下:

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

这有时是扔分割故障。

为什么?

+1

您应该为我们提供此代码的上下文。该代码隔离工作得很好。 – mfontanini

+0

代码是巨大的,从核心转储,软件总是挂在这条线,然后进入地图库 – Kam

+1

'我的地图'可能已被我们无法看到的一些代码损坏。你尝试过调试吗?可以更容易确定是否是这种情况。 – eran

回答

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