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

Was bedeutet Realloc in der C-Sprache?

WBOY
WBOYnach vorne
2023-08-28 12:41:051367Durchsuche

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);

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);

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;
}

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen