Fonction realloc () dans la bibliothèque C: comment l'utiliser? Apprenez avec l'exemple

Table des matières:

Anonim

Qu'est-ce que realloc ()?

realloc () est une fonction de la bibliothèque C pour ajouter plus de taille de mémoire aux blocs de mémoire déjà alloués. Le but de la réallocation en C est d'étendre les blocs de mémoire actuels tout en laissant le contenu d'origine tel quel. La fonction realloc () permet de réduire la taille de la mémoire précédemment allouée par les fonctions malloc ou calloc. realloc signifie réallocation de la mémoire.

Syntaxe pour realloc en C

ptr = realloc (ptr,newsize);

L'instruction ci-dessus alloue un nouvel espace mémoire avec une taille spécifiée dans la variable newsize. Après avoir exécuté la fonction, le pointeur sera renvoyé sur le premier octet du bloc mémoire. La nouvelle taille peut être plus grande ou plus petite que la mémoire précédente. Nous ne pouvons pas être sûrs que si le bloc nouvellement alloué pointera vers le même emplacement que celui du bloc mémoire précédent. La fonction de réallocation en C copiera toutes les données précédentes dans la nouvelle région. Cela garantit que les données resteront en sécurité.

Par exemple:

#include int main () {char *ptr;ptr = (char *) malloc(10);strcpy(ptr, "Programming");printf(" %s, Address = %u\n", ptr, ptr);ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new sizestrcat(ptr, " In 'C'");printf(" %s, Address = %u\n", ptr, ptr);free(ptr);return 0;} 

Comment utiliser realloc ()

Le programme ci-dessous en C montre comment utiliser la réallocation en C pour réallouer la mémoire.

#include #include int main() {int i, * ptr, sum = 0;ptr = malloc(100);if (ptr == NULL) {printf("Error! memory not allocated.");exit(0);}ptr = realloc(ptr,500);if(ptr != NULL)printf("Memory created successfully\n");return 0;}

Résultat de la réallocation dans l'exemple C:

Memory created successfully

Chaque fois que la réaffectation entraîne une opération infructueuse, elle renvoie un pointeur nul et les données précédentes sont également libérées.