Dynamische Speicherallokation in C: malloc() verstehen mit praktischen Beispielen
Was ist malloc() in C?
In der C-Standardbibliothek reserviert malloc() – kurz für „memory allocation“ – zur Laufzeit einen zusammenhängenden Speicherblock. Die Funktion gibt einen void*-Zeiger auf den Anfang dieses Blocks zurück, den Sie in jeden benötigten Zeigertyp casten können.
Syntax
ptr = (cast_type *)malloc(byte_size);
Wobei:
ptrein Zeiger des angegebenencast_typeist.byte_sizedie Anzahl der zu allozierenden Bytes angibt.
Beispiel:
ptr = (int *)malloc(50);
Nach diesem Aufruf sind 50 Bytes reserviert, und ptr zeigt auf das erste Byte dieses Bereichs.
Praktisches Beispiel
#include <stdlib.h>
#include <stdio.h>
int main() {
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); // Platz für 15 Integer allozieren
if (ptr != NULL) {
*(ptr + 5) = 480; // 480 dem 6. Integer zuweisen
printf("Wert des 6. Integer ist %d", *(ptr + 5));
}
return 0;
}
Ausgabe:
Wert des 6. Integer ist 480
Wichtige Punkte
- Die Verwendung von
sizeof(*ptr)stattsizeof(int)macht den Code robust gegen spätere Änderungen des Zeigertyps. - Kann das System die Anfrage nicht erfüllen, gibt
malloc()NULLzurück; immer auf Null-Zeiger prüfen vor Nutzung. - Der allokierte Block ist zusammenhängend und kann wie ein Array behandelt werden. Zeigerarithmetik wird dem Subskript-Operator vorgezogen, um den ursprünglichen Zeigerwert nicht zu verändern.
malloc() funktioniert mit jedem Datentyp – einschließlich Characters, Strukturen und benutzerdefinierten Typen – und bietet C-Programmierern flexible Speicherverwaltung.
C Sprache
- C++ switch‑case meistern: Syntax, Einsatz und Praxisbeispiele
- C++ Dynamische Array‑Allokation: Praktischer Leitfaden mit Code‑Beispielen
- C++ Zeiger meistern: Konzepte, Beispiele & praktische Anwendungen
- C++ Operator‑Overloading: Praktischer Leitfaden mit Code‑Beispielen
- C++ Structs erklärt mit praktischem Beispiel
- std::map in C++ meistern: Umfassender Guide mit Code‑Beispielen
- std::list in C++ meistern: Syntax, Funktionen & praktische Beispiele
- C++-Funktionen erklärt: Mit praktischen Code-Beispielen
- calloc() in C: Null-initialisierte Speicherallokation mit praktischem Beispiel
- realloc() in C: Syntax, Best Practices & Beispiel