Que sont la pile (Stack) et le tas (Heap) ?

Tous deux sont utilisés pour gérer les accès à la mémoire mais leur fonctionnement et leur utilisation ne sont pas les mêmes.

La pile et le tas sont deux mécanismes de gestion de la mémoire différents. Ils sont utilisés tous les deux par les programmes pour gérer les accès à la mémoire mais leur fonctionnement et leur utilisation ne sont pas les mêmes.

La pile est une partie de la mémoire allouée par le système d'exploitation pour l'exécution d'une tâche. Elle fonctionne comme une pile d'objets, c'est-à-dire que le dernier élément arrivé dans la pile est le premier que l'on peut retirer. La pile est notamment utilisée lorsque les variables sont transmises d'une fonction à une autre. Grâce au système de pile, la tâche n'a pas à se souvenir de l'emplacement d'un élément au sein de la pile, ce qui rend la pile beaucoup plus rapide dans son utilisation. La taille de la pile est décidée par le système d'exploitation au moment du lancement de la tâche, elle ne peut pas varier et la pile est supprimée lors de la fin de l'exécution de la tâche.

Le tas est un emplacement de la mémoire utilisé pour les allocations dynamiques, par exemple les pointeurs. Contrairement à la pile, n'importe quel bloc de cet espace peut être alloué ou libéré à n'importe quel moment. Ce système rend la gestion du tas plus complexe et moins rapide car il est nécessaire de connaitre en permanence quel bloc est alloué. Le tas est créé au démarrage d'un processus et est lié à celui-ci. Cela signifie que plusieurs tâches peuvent accéder à un même bloc dans cette mémoire. Il est donc nécessaire de gérer l'accès concurrentiel. La taille du tas varie et peut augmenter si le programme a besoin de plus de mémoire.

L'utilisation du tas n'est pas automatique et dépend du langage avec lequel vous programmez. En C++, le tas est appelé avec les mots-clés new ou encore malloc. Dans le langage C, il est nécessaire de libérer la mémoire occupée par les pointeurs lorsque l'on n'en a plus besoin avec les instructions delete ou free. Une mauvaise utilisation du tas peut entraîner des fuites de mémoire et ralentir, voire perturber, le fonctionnement d'une application.

Divers