Die dynamische Speicherverwaltung in C bezieht sich auf die Fähigkeit eines Programms, Speicherplatz zur Laufzeit (dynamisch) zu reservieren und freizugeben, anstatt dies statisch während der Kompilierung zu tun. In C gibt es vier Hauptfunktionen für die dynamische Speicherverwaltung: malloc(), calloc(), realloc() und free().
malloc() steht für "Memory allocation" und wird verwendet, um einen bestimmten Betrag an Speicherplatz zu reservieren. Sie gibt einen Zeiger auf den Beginn des reservierten Speichers zurück. Der Speicher wird jedoch nicht automatisch mit Nullen initialisiert.
int *ptr = (int *)malloc(sizeof(int) * 5);
calloc() steht für "Contiguous allocation" und reserviert Speicherplatz für eine bestimmte Anzahl von Elementen eines gegebenen Datentyps. Der Speicher wird mit Nullen initialisiert.
int *ptr = (int *)calloc(5, sizeof(int));
realloc() steht für "Reallocate Memory" und ermöglicht das Ändern der Größe eines bereits reservierten Speicherblocks. Sie kann verwendet werden, um mehr Speicherplatz zuzuweisen oder Speicherplatz freizugeben.
ptr = (int *)realloc(ptr, sizeof(int) * 10);
free() wird verwendet, um den zuvor reservierten Speicherplatz freizugeben. Nach dem Freigeben sollte der Zeiger nicht mehr verwendet werden.
free(ptr);