Sie Ihre Anwendung starten (im Debug-Modus kompiliert) mit der Syntax:
valgrind yourapp
Valgrind Sie zeigt den Stapel Backtrace von wo Segmentierungsfehler aufgetreten. Danach liegt es an Ihnen zu finden, was passiert ist und es zu korrigieren.
In Ihrem Code, unabhängig von Valgrind, würde ich überprüfen, was cont[ "some_key" ]
die wahrscheinlichste Ursache für Ihre segfault zurückgegeben wird, ist, dass der zurückgegebene Wert ist einige wilde Zeiger oder überhaupt nicht initialisiert. Wenn so versuchen Sie es wie cont["some_key"][0]
zuzugreifen, würde auch 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 (keine Ausnahme) den Datenteil der als Schlüssel verwendeten Zeichenfolge nicht zuordnen konnten. Die std :: map ist keine Hash-Tabelle, sondern nur ein geordneter Container. Wenn man einen Schlüssel sucht, muss man vielleicht auf andere Schlüssel zugreifen, und da könnte Scheiße passieren. Um zu überprüfen, ob Sie versuchen können, alle Schlüssel in Ihrer Map zu iterieren und Inhalt anzuzeigen (um zu sehen, ob ein Problem speziell mit "some_key" auftritt oder wenn Sie auf nichts in map zugreifen können.
Sie könnten auch mit einer unordered_map versuchen, wenn Sie Programm muss nicht sehen, die Bestellung, wenn das Verhalten ist das gleiche.
'cont' wäre nicht ein global, auf das Sie in einigen globalen Objekten Konstruktor zugreifen würde es? –
@Davit: BTW, Sie möchten vielleicht ab und zu eine Antwort akzeptieren. Jeder weiß, welche Antwort Ihr Problem gelöst hat, ist ein wichtiger Aspekt der SO-Community. –
ok Ich werde über Fehler –