Gefällt mir nicht neueren Programmiersprachen wie Java und Python, erfordern Programmiersprachen wie C der Programmierer seinen eigenen Speicher verwalten. C bietet Einrichtungen, um freien Speicher anzufordern und senden Sie es an das Betriebssystem aber nicht mehr. Weil Sprachen wie C keine Garbage Collection-Mechanismus anbieten zu reinigen, Objekte, die nicht mehr in Gebrauch sind , muss der Programmierer wachsam sein und Entfernen von Objekten , wenn sie nicht mehr benötigt werden. Wenn ein Programm nicht bekommt loswerden seiner noch nicht genutzten Objekten können die resultierende Speicherlecks verursachen das Betriebssystem zum Absturz bringen. Anleitung
1
Installieren Sie die " valgrind " Debugging -Suite.
Valgrind Paket ist frei verfügbar auf allen Linux-Distributionen. Um es auf Debian abgeleiteten Distributionen wie Ubuntu zu installieren , geben Sie " sudo apt- get install valgrind . " Auf RedHat oder Fedora, " sudo yum installieren valgrind . " Type
2
Kompilieren Sie Ihr Programm mit Debug-Symbole .
Die häufigste Compiler für C-Programme auf Linux-Systemen ist gcc . Verwenden Sie die Option "- g" -Flag auf gcc anzuweisen Debug-Symbole in den binären , die es schafft gehören . ( Debugging-Symbole sind notwendig für Debugger wie valgrind auf spezifische Probleme in Ihrem Code verweisen ) .
Wenn Sie ein C-Programm mit dem Namen haben " memoryhog.c . " zum Beispiel , würden Sie kompilieren Sie es mit diesem Befehl : gcc- g memoryhog.c
3
Ausführen Ihres Programms durch binäre valgrind
Sofern Sie es nicht anders sagen , gcc . Ihr Programm " a.out . " nennen Um Ihre binary namens " a.out " mit valgrind auszuführen, geben Sie folgenden Befehl ein: . Valgrind - Leck -check = full - show- erreichbar = yes /a.out
4
Untersuchen Sie den Ausgang von valgrind
Wenn alle Speicherlecks behoben wurden , valgrind Berichte " Alle Heapblöcke befreit wurden - . keine Lecks möglich sind " .
Falls Speicherlecks vorhanden sind, listet die valgrind Linie an, auf der das Leck entsteht.