Maison  >  Article  >  développement back-end  >  En langage C, que signifie Realloc ?

En langage C, que signifie Realloc ?

WBOY
WBOYavant
2023-08-28 12:41:051340parcourir

La fonction d'allocation de mémoire de la bibliothèque C void *realloc(void *ptr, size_t size) tente de redimensionner le bloc de mémoire pointé par ptr qui a été précédemment alloué à l'aide d'appels malloc ou calloc.

Fonctions d'allocation de mémoire

La mémoire peut être allouée de deux manières :

En langage C, que signifie Realloc ?

Une fois la mémoire allouée au moment de la compilation, elle ne peut pas être modifiée pendant l'exécution. Soit la mémoire est insuffisante, soit il s'agit d'un gaspillage de mémoire.

La solution est de créer de la mémoire de manière dynamique, c'est-à-dire en fonction des besoins du programme lors de son exécution.

Les fonctions standard de la bibliothèque pour la gestion dynamique de la mémoire sont les suivantes :

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

realloc ( ) la fonction

  • est utilisée pour réallouer mémoire allouée.

  • Peut réduire ou augmenter la mémoire allouée.

  • Renvoie un pointeur vide pointant vers l'adresse de base de la mémoire réaffectée. La syntaxe de la fonction

realloc() est la suivante :

Free void *realloc (pointer, newsize);

Exemple

L'exemple suivant montre l'utilisation de la fonction realloc().

int *ptr;
ptr = (int * ) malloc (1000);// we can use calloc also
- - -
- - -
- - -
ptr = (int * ) realloc (ptr, 500);
- - -
- - -
ptr = (int * ) realloc (ptr, 1500);

Exemple

Ce qui suit est un programme C utilisant la fonction realloc() :

Démonstration en ligne

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

Sortie

Lorsque le programme ci-dessus est exécuté, il produit les résultats suivants −

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer