Maison > développement back-end > C++ > le corps du texte

En langage C, que signifie Realloc ?

WBOY
Libérer: 2023-08-28 12:41:05
avant
1373 Les gens l'ont consulté

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);
Copier après la connexion

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);
Copier après la connexion

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;
}
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal