Heim > Backend-Entwicklung > C++ > Was bedeutet Realloc in der C-Sprache?

Was bedeutet Realloc in der C-Sprache?

WBOY
Freigeben: 2023-08-28 12:41:05
nach vorne
1438 Leute haben es durchsucht

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.

Speicherzuweisungsfunktionen

Speicher kann auf zwei Arten zugewiesen werden:

Was bedeutet Realloc in der C-Sprache?

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:

  • malloc ( )
  • calloc ( )
  • realloc ( )
  • free ( )

realloc ( )-Funktion

  • 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);
Nach dem Login kopieren

Beispiel

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);
Nach dem Login kopieren

Beispiel

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&#39;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;
}
Nach dem Login kopieren

Ausgabe

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&#39;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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage