iniciar su aplicación (compilado en modo depuración) con la sintaxis:
valgrind yourapp
Valgrind le mostrará la traza de la pila donde se produjo fallo de segmentación. Después de eso depende de ti encontrar lo que sucedió y corregirlo.
En su código, independientemente de valgrind, me gustaría comprobar lo que vuelve cont[ "some_key" ]
la causa más probable de su violación de segmento es que el valor devuelto es un poco de puntero salvaje o no inicializado en absoluto. Si es así, cualquier intento de acceder a él como cont["some_key"][0]
también causaría un error de segmentación.
Otra idea: ¿qué pasa con las teclas de secuencia en el mapa? ¿Es posible que algunos de ellos silenciosamente (sin excepción) no hayan podido asignar la parte de datos de la cadena utilizada como clave? El std :: map no es una tabla hash, sino solo un contenedor ordenado. Al buscar una tecla, es posible que necesite acceder a otras teclas y puede que ocurra una mierda allí. Para verificar que puede intentar repetir todas las teclas en su mapa y mostrar contenido (para ver si el problema ocurre específicamente con "some_key" o si no puede acceder a nada en el mapa.
También podría intentar con un mapa desordenado si programa no necesita pedir para ver si el comportamiento es el mismo.
'cont' no sería un global al que se accede en algún constructor de objetos globales, ¿verdad? –
@Davit: Por cierto, es posible que desee aceptar una respuesta de vez en cuando. Permitir que todos sepan qué respuesta resolvió su problema es un aspecto importante de la comunidad SO. –
ok Escribiré sobre el código de revisión –