Starten Sie Ihre (im Debug-Modus kompilierte) Anwendung mit der Syntax:
valgrind yourapp
Valgrind zeigt Ihnen den Stack-Backtrace, wo der Segmentierungsfehler aufgetreten ist. Danach liegt es an Ihnen, herauszufinden, was passiert ist, und es zu korrigieren.
In Ihrem Code, unabhängig von valgrind, würde ich überprüfen, was zurückgibt cont[ "some_key" ]
die wahrscheinlichste Ursache für Ihre Segfault ist, dass der zurückgegebene Wert einige wilde Zeiger oder überhaupt nicht initialisiert ist. Wenn dies der Fall ist, versuchen Sie, auf den Wert wie folgt zuzugreifen cont["some_key"][0]
würde ebenfalls einen Segmentierungsfehler verursachen.
Eine andere Idee: Was ist mit den String-Schlüsseln in Ihrer Karte? Ist es möglich, dass einige von ihnen stillschweigend (ohne Ausnahme) den Datenteil des als Schlüssel verwendeten Strings nicht zuordnen konnten. Die std::map ist keine Hashtabelle, sondern nur ein geordneter Container. Bei der Suche nach einem Schlüssel kann es sein, dass sie auf andere Schlüssel zugreifen muss und da kann schon mal was passieren. Um das zu überprüfen, können Sie versuchen, auf alle Schlüssel in Ihrer Map zu iterieren und den Inhalt anzuzeigen (um zu sehen, ob das Problem speziell bei "some_key" auftritt oder ob Sie auf nichts in der Map zugreifen können.
Sie können es auch mit einer unordered_map versuchen, wenn Ihr Programm keine Ordnung braucht, um zu sehen, ob das Verhalten dasselbe ist.