L'allocation dynamique

Difficulté Moyen
Note
Thématiques
Mis à jour le lundi 7 janvier 2013

Toutes les variables que nous avons créées jusqu'ici étaient construites automatiquement par le compilateur du langage C. C'était la méthode simple. Il existe cependant une façon plus manuelle de créer des variables que l'on appelle l'allocation dynamique.

Un des principaux intérêts de l'allocation dynamique est de permettre à un programme de réserver la place nécessaire au stockage d'un tableau en mémoire dont il ne connaissait pas la taille avant la compilation. En effet, jusqu'ici, la taille de nos tableaux était fixée « en dur » dans le code source. Après lecture de ce chapitre, vous allez pouvoir créer des tableaux de façon bien plus flexible !

Il est impératif de bien savoir manipuler les pointeurs pour pouvoir lire ce chapitre ! Si vous avez encore des doutes sur les pointeurs, je vous recommande d'aller relire le chapitre correspondant avant de commencer.

Quand on déclare une variable, on dit qu'on demande à allouer de la mémoire :

int monNombre = 0;

Lorsque le programme arrive à une ligne comme celle-ci, il se passe en fait les choses suivantes :

  1. votre programme demande au système d'exploitation (Windows, Linux, Mac OS…) la permission d'utiliser un peu de mémoire ;

  2. le système d'exploitation répond à votre programme en lui indiquant où il peut stocker cette variable (il lui donne l'adresse qu'il lui a réservée) ;

  3. lorsque la fonction est terminée, la variable est automatiquement supprimée de la mémoire. Votre programme dit au système d'exploitation : « Je n'ai plus besoin de l'espace en mémoire que tu m'avais réservé à telle adresse, merci ! L'histoire ne précise pas si le programme dit vraiment « merci » à l'OS, mais c'est tout dans son intérêt parce que c'est l'OS qui contrôle la mémoire !

Jusqu'ici, les choses étaient automatiques. Lorsqu'on déclarait une variable, le système d'exploitation était automatiquement appelé par le programme.
Que diriez-vous de faire cela manuellement ? Non pas par pur plaisir de faire quelque chose de compliqué (même si c'est tentant !), mais plutôt parce que nous allons parfois être obligés de procéder comme cela.

Dans ce chapitre, nous allons :

  • étudier le fonctionnement de la mémoire (oui, encore !) pour découvrir la taille que prend une variable en fonction de son type ;

  • puis attaquer le sujet lui-même : nous verrons comment demander manuellement de la mémoire au système d'exploitation. On fera ce qu'on appelle de l'allocation dynamique de mémoire ;

  • enfin, découvrir l'intérêt de faire une allocation dynamique de mémoire en apprenant à créer un tableau dont la taille n'est connue qu'à l'exécution du programme.


L'auteur