Dynamische Speicherverwaltung II – calloc
In diesem Beitrag erklären wir dir diesmal wie die dynamische Speicherverwaltung calloc funktioniert.
Inhaltsübersicht
Schema zur allgemeinen Speicherreservierung
Zunächst ist es wichtig zu wissen, dass es für die Speicherreservierung ein allgemeines Schema gibt, das du später auf die anderen möglichen Arbeitsweisen übertragen kannst. Als Erstes rufst du eine Bibliotheksfunktion auf, die entweder Speicher reserviert, oder für dessen Erweiterung oder Verringerung zuständig ist. Der Rückgabewert wird an spezifische Zeiger zurückgegeben. Dabei erfolgt eine automatische Umwandlung.
Fehlerbehandlung und Dereferenzierung
War unsere Reservierung nicht erfolgreich greifen wir dennoch den Rückgabewert ab und führen eine entsprechende Fehlerbehandlung durch. Danach speichern und verwalten wir die Werte des reservierten Bereiches über ganz normale Dereferenzierung.
Hast du dann alle deine Befehle, die diesen Speicherbereich betreffen, abgewickelt und brauchst diesen daher nicht mehr, musst du nur noch den reservierten Speicher wieder freigeben.
Speicherverwaltung calloc als Ergänzung zu malloc
Diese Methode kannst du nicht nur auf malloc anwenden, sondern auch auf calloc. Aber was ist calloc überhaupt?
calloc ist eine Funktion, die ebenfalls Speicher reserviert. Jedoch ist sie dabei etwas fleißiger als malloc. Deswegen reserviert sie für uns nicht nur die gewünschte Menge an Speicherplatz, sondern füllt diesen auch mit Nullen auf. Das ist deshalb so praktisch, da dabei dafür gesorgt wird, dass der Nonsens, der vor der Reservierung in den Zellen stand, überschrieben wird.
Wenn du das Ganze dann anwendest, sieht es so aus:
Im Vergleich zu unserem vorherigen Beispiel verändert sich nicht viel. Wir müssen lediglich die Wertzuweisung für array anpassen, denn calloc hat im Gegensatz zu malloc zwei einzelne Eingabeparameter. Was ist aber nun das zweite? Ganz einfach. Statt die Länge des benötigten Speicherbedarfs selbst mit einer Multiplikation zu errechnen, können wir das hier einfach auslagern. Das tun wir, indem wir als ersten Parameter die Größe der zu speichernden Module angeben und als Zweites die Menge der gewünschten Module einschreiben.
Auch nach unserem Aufruf bleibt alles andere beim Alten und das Programm verläuft praktisch identisch. Du siehst: Es ist ganz einfach, dein Programm so anzupassen, dass du den Nonsens aus deinem Speicher loswirst und dennoch ein einfaches Programm behalten kannst.
Nun hast du dein Wissen passend ergänzt und weißt auch wie die dynamische Speicherverwaltung calloc abläuft.