Bearbeiten Die vollständige Quelle finden Sie hier:
Programm hier aufrufen:
Ich habe eine relativ einfache Speicherzuweisung, die fehlschlägt. Die Anwendung ist nicht besonders kompliziert, obwohl sie Speicherplatz an einigen Stellen reserviert. Es ist C, nicht C ++. Ich bin sicher, dass dies ein Problem ist, Speicher zuzuweisen , nicht Speicher freizugeben
Hier ist der Code:
%Vor%Bei der Ausführung bekomme ich:
%Vor%:2
, aber ich sehe nicht
:3
, was mir sagt, dass es einen Fehler in malloc gibt. (Ich hoffe, ich liege falsch.) valgrind
laufe, funktioniert sie wie erwartet. o->data
zu sein, das ist a
%Code%. Wenn ich char*
anstelle von char* A; A =
deklariere, stürzt es immer noch ab. Ich würde mich sehr über Ideen freuen, wie Sie Fehler beheben können / warum dies passiert.
Danke!
Also, ich glaube, ich habe es gefunden. Möglicherweise müssen wir dies unter "Sean muss grundlegende Valgrind Fähigkeiten zu lernen." Hier ist, wie ich es für zukünftige Beobachter gelöst habe.
memcpy()
in hashtable_put
Funktion von hashtable.c
. Der subtile Hinweis ist, dass ich das erste Argument übergeben habe
zu memcpy mit dem address-of-Operator &
, der die Korruption verursacht hat. Die Moral der Geschichte:
Das Commit, das das Problem bisher behoben hat: