2 - Speicherverwaltung [ID:15676]
21 von 21 angezeigt

In der letzten Tafelübung haben wir euch bereits die Funktion M patients centers and c-

aloc vorgestellt, mit denen ihr euch dynamisch zur Laufzeit Speicher vom System anfordern

könnt.

In Ergänzung dazu, wollen wir euch diesmal die Re-aloc-Funktion vorstellen, mit denen

ihr die angeforderte Speicher- bereiche zur Laufzeit wieder vergrößern könnt.

Als Voraussetzung dafür gilt, dass die Speicherbereiche vorher entweder von malloc und c-alloc oder

durch die realloc-Funktion selber allokiert wurden.

Dabei funktioniert realloc so, dass die Funktion als erstes Argument einem Zeiger auf ein Stück

Speicher erwartet, das durch eine der vorher genannten Funktionen allokiert wurde.

Als zweites Argument wird eine neue Größe angegeben, auf die das Stück Speicher entweder

vergrößert oder verkleinert werden soll.

Was realloc dann macht, ist, dass es einen neuen Speicherbereich allokiert, der eben

so groß ist wie angefordert und dass es den Inhalt des alten Speichers in den neuen

hinein kopiert. Im Erfolgsfall wird zusätzlich noch der alte Speicherbereich wieder freigegeben.

Anschließend wird ein Zeiger auf den neuen Speicherbereich als Rückgabewert zurückgegeben.

Dabei ist zu beachten, dass das Kopieren der Daten relativ aufwendig sein kann, wenn es

sich dabei um große Mengen handelt. Eine Besonderheit der Realloc-Funktion ist,

dass sie sich genauso verhält wie malloc, wenn man als erstes Argument nicht etwa einen

Zeiger zu einem schon allokierten Stück Speicher angibt, sondern einen Nullpointer.

Sollte die Realloc-Funktion fehlschlagen, gibt sie als Rückgabewert Null zurück.

Und außerdem wird der Speicher dadurch, dass das erste Argument referenziert wird, nicht freigegeben.

Teil einer Videoserie :
Teil eines Kapitels:
Sortieren und Fehlerbehandlung

Zugänglich über

Offener Zugang

Dauer

00:01:50 Min

Aufnahmedatum

2020-05-13

Hochgeladen am

2020-05-13 09:06:16

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen