Freier Speicher in C mit Free Function

Free Memory C With Free Function



Die Sprache C ist effizient genug, um ihre Speicherverwaltung zu bewältigen. Das bedeutet, dass immer dann, wenn Sie eine reguläre Variable eines beliebigen Datentyps in C deklarieren, die Programmiersprache selbst dafür verantwortlich ist, diesen Speicher freizugeben oder freizugeben, sobald Ihr Programm erfolgreich ausgeführt wurde. Bei der dynamischen Speicherzuweisung müssen Sie den Speicher jedoch selbst freigeben, da Sie den Speicher manuell zuweisen.

In der Bibliothek stdlib.h gibt es dafür eine eigene Funktion, nämlich die Funktion free(). Heute werden wir die Notwendigkeit untersuchen, diese Funktion in der Programmiersprache C zu verwenden. Danach sehen wir uns einige Beispiele an, in denen diese Funktion verwendet wurde, um den Speicher in der Programmiersprache C unter Linux manuell freizugeben.







Notwendigkeit der Verwendung der Free-Funktion in C zum Freigeben von Systemspeicher:

Wir alle wissen, dass unsere Computersysteme einen begrenzten Speicher haben, weshalb wir niemals unendlich viele Programme darin ausführen können. Bei der automatischen Speicherzuweisung sorgt der Computer dafür, dass der Speicher freigegeben wird, wenn Ihr Programm seine Ausführung beendet hat. Wenn wir den Speicher jedoch manuell aus dem Heap zuweisen, müssen wir ihn auf die eine oder andere Weise freigeben.



Andernfalls wird uns irgendwann der Speicher knapp und wir werden unsere Programme nicht weiter ausführen. Hier kommt die Funktion free() der Bibliothek stdlib.h ins Spiel. Wir verwenden diese Funktion am Ende eines Programms direkt vor der return-Anweisung, damit der Heap-Speicher vor der Beendigung Ihres Programms an das Computersystem zurückgegeben werden soll.



Angenommen, Sie ignorieren diese Funktion beim Schreiben Ihrer C-Codes, die besonders auf die dynamische Speicherzuweisung ausgerichtet sind. In diesem Fall kommt ein Punkt, an dem Sie nicht mehr auf Ihren Heap zugreifen können, da ihm der Speicher ausgeht. Aus diesem Grund darf diese scheinbar weniger wertvolle Funktion nie vergessen werden, wenn Sie die Verantwortung für die Speicherzuweisung dynamisch übernehmen.





Die allgemeine Syntax der Funktion free() in der Programmiersprache C lautet wie folgt:

Leerekostenlos (Leere*ptr)

Hier gibt das Schlüsselwort void vor der Funktion free() an, dass der Rückgabetyp dieser Funktion void ist. Der Zeiger innerhalb der Klammern entspricht dem Speicherplatz, der freigegeben werden muss. Der folgende Abschnitt beschreibt einige Beispiele, in denen die Funktion free() verwendet wurde, um den in C erworbenen dynamischen Speicher freizugeben.



Beispiele für die Verwendung der Free-Funktion in C:

Die Funktion free() kann mit allen drei Speicherzuweisungsfunktionen der Bibliothek stdlib.h verwendet werden, d. h. malloc, calloc und realloc. Die Nutzung dieser Funktion ist nach Angabe der Grundfunktionalität Ihres Programms zwingend erforderlich, damit Sie den Heap-Speicher, den Sie während der Programmausführung dynamisch zugewiesen haben, an Ihr Computersystem zurückgeben können. Sehen wir uns nun einige Beispiele an, in denen die Funktion free() mit den Funktionen malloc und calloc in der Programmiersprache C verwendet wurde.

Beispiel # 1: Verwenden der Free-Funktion mit calloc in C:

Der C-Code für die Verwendung der Funktion free() mit der Funktion calloc() wurde in der folgenden Abbildung geteilt:

Der grundlegende Zweck dieses Codes bestand darin, mit Hilfe der Funktion calloc() dynamisch etwas Speicher zuzuweisen. Dazu haben wir die Größe des dynamischen Speichers und die Werte dieses dynamischen Speichers als Eingabe vom Benutzer genommen. Dann wollten wir die erfassten Werte auf dem Terminal ausdrucken. Nach diesem ganzen Code haben wir unsere free()-Funktion, die den zugewiesenen dynamischen Speicher aufgrund der Ausführung unseres C-Programms freigibt.

Eine leicht modifizierte Version des gleichen Codes wird auch in dem unten zitierten Bild gezeigt:

Diese modifizierte Version diente nur dazu, unsere dynamisch zugewiesenen Speicherwerte vor der manuellen Initialisierung zu drucken. Wir wissen, dass die Funktion calloc() den gesamten Speicher mit Nullen initialisiert, bevor die Aktualisierung erfolgt. Der wichtigste Punkt hier in diesem Code ist jedoch, dass wir, obwohl dieser Code recht kompakt und einfach war, immer noch die Funktion free() verwendet haben, sobald die gewünschte Funktionalität erreicht war, nur um den Heap-Speicher freizugeben, den wir hatten als Ergebnis der Ausführung dieses C-Programms erworben.

Beispiel #2: Verwenden der Free-Funktion mit malloc in C:

Der C-Code für die Verwendung der Funktion free() mit der Funktion malloc() wurde im unten angehängten Bild geteilt:

Der grundlegende Zweck dieses Codes bestand darin, mit Hilfe der Funktion malloc() dynamisch etwas Speicher zuzuweisen. Dazu haben wir die Werte dieses dynamischen Speichers in einer for-Schleife zugewiesen. Dann wollten wir die erfassten Werte mit Hilfe einer weiteren for-Schleife auf dem Terminal ausdrucken. Nach diesem ganzen Code haben wir unsere free()-Funktion direkt vor der return-Anweisung, die einfach den zugewiesenen dynamischen Speicher als Ergebnis der Ausführung unseres C-Programms freigibt.

Abschluss:

In diesem Artikel wurde betont, wie wichtig es ist, die Funktion free() in der Programmiersprache C unter Linux zu verwenden. Die meisten Benutzer glauben, dass die Zuordnungsfunktionen der Datei stdlib.h wichtiger sind; Wenn Sie diesen Artikel durchgehen, können Sie jedoch deutlich sehen, dass die Funktion free() ebenso wichtig ist. Es wird Ihnen helfen, den dynamisch erfassten Speicher freizugeben und sicherzustellen, dass Ihnen der Speicher nie ausgeht, wenn Sie versuchen, Ihre Programme in Zukunft auszuführen.