C's free() Funktion meistern: Praktischer Leitfaden & Beispiel
Was ist die free()-Funktion in C?
Die free()-Funktion, Teil der C-Standardbibliothek, gibt Speicher frei, der zuvor mit malloc(), calloc() oder realloc() allokiert wurde. Durch die Rückgabe des Blocks an den Heap hält sie den Speicher-Footprint des Programms unter Kontrolle und verhindert die Erschöpfung des verfügbaren Speichers.
Im Gegensatz zu Stack-Variablen muss dynamisch allokierter Speicher explizit freigegeben werden. Das Unterlassen von free() kann zu Memory Leaks und schließlich zu Out-of-Memory-Fehlern führen.
Syntax
void free(void *ptr);
Hier ist ptr ein Zeiger auf den freizugebenden Speicherblock. Die Übergabe eines NULL-Zeigers ist sicher und führt zu keiner Operation.
Praktisches Beispiel
#include <stdio.h>
#include <stdlib.h>
int main(void) {
// Platz für 10 Integer allozieren
int *ptr = malloc(10 * sizeof(*ptr));
if (ptr == NULL) {
fprintf(stderr, "Speicherallokation fehlgeschlagen\n");
return 1;
}
// Wert speichern und anzeigen
ptr[2] = 50;
printf("Wert des 3. Integer ist %d\n", ptr[2]);
// Speicher freigeben
free(ptr);
return 0;
}
Ausgabe:
Wert des 3. Integer ist 50
Best Practices
- Rückgabewert von
malloc()(oder verwandten Funktionen) immer prüfen vor Nutzung des Zeigers. - Zeiger nach
free()aufNULLsetzen, um versehentliche Double-Frees zu vermeiden. - Nicht dynamisch allokierten Speicher nicht freigeben.
free()so früh wie möglich aufrufen, nachdem der Speicher nicht mehr benötigt wird, um den Heap schlank zu halten.
C Sprache
- Impure Functions in VHDL nutzen: FSM-Lesbarkeit und Wartbarkeit steigern
- VHDL-Funktionen meistern: Praktischer Leitfaden für effizientes Design
- C++ Vectors meistern: Dynamische Arrays, Iteratoren & Praxisbeispiele
- std::map in C++ meistern: Umfassender Guide mit Code‑Beispielen
- calloc() in C: Null-initialisierte Speicherallokation mit praktischem Beispiel
- realloc() in C: Syntax, Best Practices & Beispiel
- Java String length() Methode: String-Länge ermitteln (Beispiel)
- Java String compareTo() meistern: Syntax, Anwendungsfälle und praktische Beispiele
- Dateien in Java mit BufferedReader lesen – Praktischer Leitfaden mit Beispielen
- Pythons strip()-Methode meistern: Umfassender Leitfaden & Praxisbeispiele