kennen:lib:realloc
Inhaltsverzeichnis
realloc()
#include
<cstdlib>
void * realloc (void *ptr, size_t neue_groesse)
Vergroessert den mit calloc() oder malloc() reservierten Speicherbereich.
Bei Bedarf wird dazu ein neuer Speicherbereich bereitgestellt. Der alte Speicherinhalt wird soweit wie möglich (bis zum Minimum von alter und neuer Blockgröße) übernommen und der alte Speicherblock freigegeben.
Nicht mehr benötigter Speicher muss mit free() freigegeben werden.
Parameter
ptr | Zeiger auf bisheriges dynamisches Feld |
anzahl | neuer Speicherplatzbedarf in Byte |
Ergebnis
Rückgabewert: Zeiger auf dynamischen Speicherblock mit neuer Größe.
Kann die Größe nicht geändert werden, liefert die Funktion NULL
und der alte Speicherblock ist weiter gültig.
War ptr
ein NULL
-Zeiger, verhält sich die Funktion wie
malloc().
Siehe auch
Operatoren new und delete, calloc(), malloc(), free().
Beispiel
- realloc.cpp
#include <cstdlib> #include <iostream> int main() { using namespace std; int anzahl = 1000; int *ptr = (int*) malloc(anzahl*sizeof(int)); if (ptr != NULL) { ptr[0] = 0; ptr[anzahl-1] = 999; // ... cout << ptr[0] << "..." << ptr[anzahl-1] << '\n'; int *neu = (int*) realloc(ptr, 2*anzahl*sizeof(int)); if (neu != NULL) { cout << "Speicherplatz verdoppelt.\n"; anzahl *= 2; ptr = neu; ptr[anzahl-1] = 1999; // ... cout << ptr[0] << "..." << ptr[anzahl-1] << '\n'; } free(ptr); } else { cerr << "Nicht genug Speicher vorhanden.\n"; } }
kennen/lib/realloc.txt · Zuletzt geändert: 2019-11-20 16:10 von 127.0.0.1