Die Speicherzuweisungsfunktion der C-Bibliothek void *realloc(void *ptr, size_t size) versucht, die Größe des Speicherblocks zu ändern, auf den ptr zeigt und der zuvor mit malloc- oder calloc-Aufrufen zugewiesen wurde.
Speicher kann auf zwei Arten zugewiesen werden:
Sobald Speicher zur Kompilierungszeit zugewiesen wird, kann er während der Ausführung nicht mehr geändert werden. Entweder ist nicht genügend Speicher vorhanden oder es handelt sich um eine Speicherverschwendung.
Die Lösung besteht darin, Speicher dynamisch zu erstellen, d. h. entsprechend den Anforderungen des Programms während der Ausführung.
Die Standardbibliotheksfunktionen für die dynamische Speicherverwaltung lauten wie folgt:
wird zur Neuzuweisung verwendet zugewiesener Speicher.
Kann den zugewiesenen Speicher reduzieren oder erhöhen.
Gibt einen leeren Zeiger zurück, der auf die Basisadresse des neu zugewiesenen Speichers zeigt. Die Syntax der Funktion
realloc() lautet wie folgt:
Free void *realloc (pointer, newsize);
Das folgende Beispiel zeigt die Verwendung der Funktion realloc().
int *ptr; ptr = (int * ) malloc (1000);// we can use calloc also - - - - - - - - - ptr = (int * ) realloc (ptr, 500); - - - - - - ptr = (int * ) realloc (ptr, 1500);
Das Folgende ist ein C-Programm, das die Funktion realloc() verwendet:
Online-Demo
#include<stdio.h> #include<stdlib.h> int main(){ int *ptr, i, num; printf("array size is 5</p><p>"); ptr = (int*)calloc(5, sizeof(int)); if(ptr==NULL){ printf("Memory allocation failed"); exit(1); // exit the program } for(i = 0; i < 5; i++){ printf("enter number at %d: ", i); scanf("%d", ptr+i); } printf("</p><p>Let's increase the array size to 7</p><p> "); ptr = (int*)realloc(ptr, 7 * sizeof(int)); if(ptr==NULL){ printf("Memory allocation failed"); exit(1); // exit the program } printf("</p><p> enter 2 more integers</p><p></p><p>"); for(i = 5; i < 7; i++){ printf("Enter element number at %d: ", i); scanf("%d", ptr+i); } printf("</p><p> result array is: </p><p></p><p>"); for(i = 0; i < 7; i++){ printf("%d ", *(ptr+i) ); } return 0; }
Wenn das obige Programm ausgeführt wird, erzeugt es die folgenden Ergebnisse –
array size is 5 enter number at 0: 23 enter number at 1: 12 enter number at 2: 45 enter number at 3: 67 enter number at 4: 20 Let's increase the array size to 7 enter 2 more integers Enter element number at 5: 90 Enter element number at 6: 60 result array is: 23 12 45 67 20 90 60
Das obige ist der detaillierte Inhalt vonWas bedeutet Realloc in der C-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!