Académique Documents
Professionnel Documents
Culture Documents
Module I33 :
Structures de données
Prof : Badr HSSINA
badr.hssina@univh2c.ma
Parcours MIP (S3)
2020-2021
L’allocation de la mémoire
Les outils de base de la gestion dynamique : malloc et free
La fonction malloc
La fonction free
struct
{
int numero ;
float taille, poids ;
char sexe ;
} pers1, pers2 ;
struct personne
{
int numero ;
float taille, poids ;
char sexe ;
} pers1, pers2 ;
typedef struct {
int numero ;
float taille, poids ;
char sexe ;
} Personne ; /* personne est le nom du type */
Personne pers1, pers2 ;
Exemple :
Exemple :
30 : Pour nom
+4 : Pour numéro, un entier
+4 : Pour taille, un réel
+4 : Pour SalHebdo, un réel
= 42 Octets
emp, qui mémorise 2000 employés, occupera :
2000 x 42 = 84000 octets > 64 Ko
Conclusion : Avant d'utiliser des tableaux pour gérer les informations d'un
problème à programmer, il faut examiner la taille des données.
......
} Etudiant ;
Etudiant * p ;
p = (Etudiant *) malloc ( sizeof(Etudiant)) ;
p = (T *) malloc (sizeof(T));
sizeof(T) donne la taille de T en nombre d'octets (de Bytes).
On demande l'espace de mémoire pour stocker *p et on dépose
l'adresse de *p dans p.
Cette affectation est représentée par le schéma suivant:
Si nous n'avons plus besoin d'un bloc de mémoire que nous avons
réservé, alors nous pouvons le libérer à l'aide de la fonction free de
la bibliothèque <stdlib.h>.
free( <Pointeur> )
libère le bloc de mémoire désigné par le <Pointeur>; n'a pas d'effet
si le pointeur a la valeur NULL.
Si nous ne libérons pas explicitement la mémoire à l'aide free, alors
elle est libérée automatiquement à la fin du programme.