Segfault beim [] Operator von Maps



  • Nabend zusammen,

    ich habe folgendes Problem:

    void pfoConfig::SetVar (const char* Name, std::string Value) {
    
    #ifdef DEBUG
        std::cout << "(Debug) Setting config var \"" << Name << "\" to \"" << Value << "\"" << std::endl;
    #endif
    
        ConfigMap[std::string(Name)] = Value;
        std::cout << "SIEGFRIED URPILS!" << std::endl;
    }
    

    Dies ist die Methode meiner Config-Klasse zum ändern / setzen von Config-Variablen.

    Das Problem ist, dass die Zeile:

    ConfigMap[std::string(Name)] = Value;
    

    einen Segfault auslöst.

    Die Map ist wie folgt deklariert:

    std::map<std::string, std::string> ConfigMap;
    

    Die Debugausgabe ergibt folgendes:

    (Debug) Setting config var "save_path" to "/home/dr-saar/screenshots"

    Program received signal SIGSEGV, Segmentation fault.

    Vielen Dank für eure Mühen im Voraus,

    Dr-Saar

    -- Edit --

    Der Funktionsaufruf:

    if (dirdlgSavePath->ShowModal() == wxID_OK) {
            textctrlSavePath->SetValue (dirdlgSavePath->GetPath());
            std::stringstream ss;
            ss << (dirdlgSavePath->GetPath ()).char_str();
            Config->SetVar ("save_path", ss.str ());
    
            Config->Write ();
        }
    


  • Sicher dass 'Name' ungleich NULL ist?



  • Badestrand schrieb:

    Sicher dass 'Name' ungleich NULL ist?

    Da die Debugausgabe einen Wert enthält, gehe ich mal davon aus.

    Gruß

    Dr-Saar



  • Oh stimmt, bin doof 😃

    Was passiert, wenn du die Texte hardcodest, also:

    ConfigMap["save_path"] = "/home/dr-saar/screenshots";
    

    ?


Anmelden zum Antworten