Segmentation fault, wenn kein cout vorhanden ist...



  • Guten Tag,
    ich verzweifel gerade an einem sehr kuriosen Problem.

    Ich nutze eine Funktion von Boost und erhalte sofort einen Segmentation Fault.
    Der Funktion muss ich einen String und einen regulären Ausdruck übergeben.
    Das kuriose ist, wenn ich mir den String vorher per cout ausgeben lasse, funktioniert es immer ohne probleme!

    string s="";
    s+=(char)key;
    //cout << s << endl;  
    return boost::regex_match(s, m_rRegEx);
    

    Hat jemand eine Idee, woran es liegen kann?


  • Mod

    Riecht nach undefiniertem Verhalten. Und bei undefiniert fällt natürlich der C-Cast auf, der allles mögliche machen könnte. Was ist denn key?



  • key ist ein Ascii-Wert (Integer), den ich von einem Keyboard-Listener erhalte.

    Wenn ich mir den Key-Wert ausgeben lasse, statt dem String s, stürzt das Programm ebenfalls nicht ab.

    Ich hab jetzt den c-cast durch ein static_cast ersetzt, was aber leider auch nicht hilft.



  • Das eigentliche Problem liegt vermutlich nicht im gezeigten Codestück. Es kann aber evtl. auch an m_rRegEx liegen. Jedoch lässt die Geschichte mit cout vermuten, dass schon vorher irgendwo was zerschossen wurde.



  • storm009 schrieb:

    Ich hab jetzt den c-cast durch ein static_cast ersetzt, was aber leider auch nicht hilft.

    Probier's mal mit Fenster öffnen und Zimmer lüften. Vielleicht geht's dann. Oder vielleicht vorher die Hände waschen. Wer weiß...

    Im Ernst: Du hast bisher zu wenig über Dein Problem verraten.


Anmelden zum Antworten