Ich habe zwei zusätzliche Zeichen am Anfang meiner Zeichenfolge hinzugefügt und ich kann nicht herausfinden, warum. Die Zeichen erscheinen nicht einmal im Code. Ich bin hier ratlos. Das ist mein Code:
%Vor%Aus irgendeinem Grund erzeugt der Code Folgendes:
%Vor%Wenn es das produzieren sollte:
%Vor% Alle Punkte @MikeCat sind korrekt, nur um hinzuzufügen, dass der von calloc
zugewiesene Speicher nicht freigegeben ist, was zu einem Speicherverlust führt. Sie können free
es wie von @ M.M in einem Kommentar gesagt, aber für das nächste Mal, um Speicherlecks zu vermeiden, können Sie valgrind
:
Nehmen wir Ihr Programm als
%Vor%hash.c
. Gehe zur Befehlszeile und kompiliere sie, zB:Wenn Ihr Programm erfolgreich kompiliert wird, erscheint eine ausführbare Datei oder
%Vor%out
-Datei. Da wir den Namen der ausführbaren Datei nicht angegeben haben, lautet der Standardnamea.out
. Lass es uns also mitvalgrind
ausführen:Dies führt zusammen mit valgrind eine ausführbare Datei aus, und wenn ein Speicherleck vorhanden ist, wird es angezeigt, wenn die ausführbare Datei beendet wird.
Wenn Sie
valgrind
nicht installiert haben, können Sie es von hier .
Ich denke, Sie haben ein oder mehrere nicht initialisierte Felder. Ich bekomme diese Warnungen, wenn ich versuche zu kompilieren:
%Vor%Wenn ich ASan Was ist ASan ? benutze ich den folgenden Fehler:
%Vor%Die Initialisierung von char * fehlt und führt daher zu undefiniertem Verhalten. Bitte initialisieren Sie das Char *
Tags und Links c