Académique Documents
Professionnel Documents
Culture Documents
dynamiques
La gestion dynamique de
la mémoire
Une variable est dite dynamique quand elle n’apparaît pas dans une déclaration
de variable explicite et ne peut être référencée directement
Elle est alors repérée par un pointeur dont la valeur n’est générée qu’au moment
de l’exécution.
M. NAGALO 1
Programmation et structure des données
dynamiques
Malloc retourne:
Un pointeur sur une zone mémoire de la taille demandée en cas de succès.
NULL en cas d’échec.
Le rôle de la fonction malloc est de retourner un pointeur sur une zone mémoire
de la taille demandée.
Son seul argument est la taille demandée, comptée en octets. Cet argument est
de type unsigned int;
M. NAGALO 2
Programmation et structure des données
dynamiques
Malloc (2)
Parfois, le calcul à la main, de la taille d’une variable (ex: tableaux) est assez
hasardeux. Il est préférable de demander au compilateur de le faire à l’aide de
l’opérateur sizeof.
sizeof(char) ->1
sizeof(double) ->8
Realloc
Augmentation de la taille d’une zone précédemment allouée.
void * realloc (descripteur, size)
void * descripteur;
int size;
M. NAGALO 3
Programmation et structure des données
dynamiques
Calloc
Allocation d’une zone mémoire initialisée avec des caractères nuls.
Elle alloue un bloc de taille « n_elem » fois « elem_size » octets, et initialise ce bloc
à 0. On peut dire que c’est un tableau dont le nombre d’éléments est « n_elem »
et la taille d’un élément « elem_size », et qui est initialisé à 0;
La valeur de retour est:
Un pointeur sur la zone allouée.
NULL en cas d’échec.
void free (void * ptr) //ptr doit être l’adresse du début de cette zone.
M. NAGALO 4
Programmation et structure des données
dynamiques
En C, l’identificateur d’un tableau, lorsqu’il est employé seul (sans indices à sa suite)
est considéré comme un pointeur (constant) sur le début du tableau.
int t*;
t = (int *) malloc (n*sizeof(int));
M. NAGALO 5
Programmation et structure des données
dynamiques
Le nombre d’éléments d’une ligne est nécessaire à l’indexation. Deux cas peuvent
alors se présenter suivant qu’il s’agit d’une constante ou d’une variable.
M. NAGALO 6
Programmation et structure des données
dynamiques
Si la taille de la ligne est variable, on peut linéariser le tableau pour mieux créer en
plus du tableau de pointeurs un autre tableau de pointeurs sur les lignes.
M. NAGALO 7