2012-06-28 31 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(); 
}