Ich habe eine ausführbare Datei, die ich auf einem Remote-Linux-Computer ausgeführt werde.Programmausgabe unterscheidet sich dramatisch unter Valgrind
Wenn ich die ausführbare Datei normalerweise (./execute arg_one), stürzt das Programm in der Mitte einer while-Schleife laufen "Fehler in` ./execute ': malloc(): Speicherbeschädigung (schnell)"
Wenn ich das Programm jedoch unter dem einfachsten valgrind (valgrind ./execute arg_one) ausführe, stürzt das Programm nicht ab, läuft den ganzen Weg durch main und produziert tatsächlich die korrekte Ausgabe.
Warum wäre das der Fall?
Ich weiß es nicht, aber Sie könnten 'MALLOC_CHECK_ = 2 ./execute arg_one' auch versuchen. – melpomene
Wie läuft Valgrind? Es könnte die Ausgabe "* correct *" erzeugen, deshalb heißt es UNDEFINED BEHAVIOR. –
Verwenden Sie 'valgrind --leak-check = full --track-origins = yes ./execute arg_one' und überprüfen Sie die Fehler dort. Ihr Programm muss etwas tun, das Valgrind verpissen wird. –