Section courante

A propos

Section administrative du site

REALLOC

Réallouer
Langage C stdlib.h

Syntaxe

void *realloc(void *tampon,size_t taille);

Paramètres

Nom Description
tampon Ce paramètre permet d'indiquer le tampon contenant l'expression à réallouer.
taille Ce paramètre permet d'indiquer la nouvelle taille du tampon

Retour

Valeur Description
NULL Cette valeur est retourné si la taille spécifié par le paramètre taille est 0 ou qu'il n'y a plus d'espace de disponible dans la mémoire dynamique.
pointeur Ces valeurs permet d'indiquer le nouveau bloc de mémoire dynamique réaffecté, pouvant être soit le même que le pointeur spécifié par le paramètre tampon ou un nouvel emplacement. Le type de ce pointeur est void *, mais peut être converti en type de pointeur de données souhaité avec déréférencement.

Description

Cette fonction permet de changer la taille d'un bloc de mémoire dynamique. Pour y arriver, la fonction realloc pourra déplacer le bloc de mémoire vers un nouvel emplacement (dont l'adresse est retournée par cette fonction). Dans les anciens compilateurs, il tentera de vérifier s'il y a de la place en mémoire immédiatement après le bloc de mémoire dynamique alloué, et s'il y en a, alors il agrandira le bloc de mémoire, sinon la fonction sera un échec et il retournera la valeur NULL.

Remarques

Exemple

Voici quelques exemples typiques de l'utilisation de cette fonction :

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int * p = malloc(20 * sizeof(int));
  7.     if(NULL != p) {
  8.         int I;
  9.         for(I = 0; I < 20; I++) {
  10.             p[I] = 1000-(I * 10);
  11.         }
  12.         printf("Avant realloc : Valeur p[15] = %i\n",p[15]);
  13.         p = (int*) realloc (p, 21 * sizeof(int));
  14.         if(NULL == p) {
  15.              printf("Impossible de reallouer de la memoire dynamiquement !\n");
  16.         } else {
  17.              printf("Avant realloc : Valeur p[15] = %i\n",p[15]);
  18.              free(p);
  19.         }
  20.     } else {
  21.         printf("Impossible d'allouer de la memoire dynamiquement !\n");
  22.     }
  23.     return 0;
  24. }

on obtiendra le résultat suivant :

Avant realloc : Valeur p[15] = 850
Avant realloc : Valeur p[15] = 850

Voir également

Langage de programmation - C - Allocation de mémoire
Langage de programmation - C - Référence de procédures et fonctions - calloc
Langage de programmation - C - Référence de procédures et fonctions - free
Langage de programmation - C - Référence de procédures et fonctions - malloc
Langage de programmation - C++ - Référence de procédures et fonctions - realloc
Langage de programmation - C pour Linux - Référence de procédures et fonctions - realloc

Références

Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 733.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 209.

Dernière mise à jour : Mardi, le 5 décembre 2017