Programmieren in C

Dynamische Speicherverwaltung II – calloc

Inhaltsübersicht

In diesem Beitrag erklären wir dir diesmal wie die dynamische Speicherverwaltung calloc funktioniert.

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.

Dynamische Speicherverwaltung, calloc
Der Rückgabewert wird an den spezifischen Zeiger zurückgegeben

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.

Dynamische Speicherverwaltung, calloc
Fehlerbehandlung und 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.

Dynamische Speicherverwaltung, calloc
calloc reserviert Speicherplatz und füllt ihn mit Nullen auf

Wenn du das Ganze dann anwendest, sieht es so aus:

Dynamische Speicherverwaltung, calloc
Anwendung von calloc

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.

Dynamische Speicherverwaltung, calloc
Anpassung der Wertzuweisung für array

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.

Dynamische Speicherverwaltung, calloc
calloc ist nahezu identisch zu malloc

Nun hast du dein Wissen passend ergänzt und weißt auch wie die dynamische Speicherverwaltung calloc abläuft.


Andere Nutzer halten diese Inhalte aus dem Bereich „Programmieren in C“ für besonders klausurrelevant

Hallo, leider nutzt du einen AdBlocker.

Auf Studyflix bieten wir dir kostenlos hochwertige Bildung an. Dies können wir nur durch die Unterstützung unserer Werbepartner tun.

Schalte bitte deinen Adblocker für Studyflix aus oder füge uns zu deinen Ausnahmen hinzu. Das tut dir nicht weh und hilft uns weiter.

Danke!
Dein Studyflix-Team

Wenn du nicht weißt, wie du deinen Adblocker deaktivierst oder Studyflix zu den Ausnahmen hinzufügst, findest du hier eine kurze Anleitung. Bitte lade anschließend die Seite neu.