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.
La mémoire peut être allouée de deux manières :
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 :
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);
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);
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'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; }
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'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!