Outils d'utilisateurs

Outils du Site


pile_et_tas

Ceci est une ancienne révision du document !


La Pile et le Tas

Organisation de la mémoire

Au sein d'une application, la mémoire disponible est découpée en deux grandes zones :

  • La pile (ou stack en anglais)
  • Le tas (heap)

La pile est une zone mémoire gérée automatiquement par le compilateur. C'est la zone par défaut d'allocation des variables. Celle ci est souvent limitée en taille (quelques méga-octets sur les systèmes modernes). Elle est aussi utilisée en particulier pour empiler les arguments d'une fonction lors de son appel(d'où son nom).

A l'inverse, l'utilisation du tas doit être faite explicitement par le programmeur par l'utilisation de l'allocation dynamique. Cette zone est virtuellement illimitée : tant qu'il y a de la mémoire de libre, on peut créer des objets dedans.

Durée de vie et portée

utilisation des blocs pour gérer des portées de variables :

int main() {
   int a { 132 };
   {
       int b { 456 };
       int c = b + a; 
   } // destruction de b et c
}

La Pile par défaut

Utiliser le Tas

Allocation dynamique avec unique_ptr et make_unique

Allocation dynamique avec shared_ptr et shared_unique

explication de la différence ? Intéret pratique ? Si on n'a pas encore vu les fonctions

bloc {}

pile_et_tas.1431026746.txt.gz · Dernière modification: 2015/05/07 21:25 par davidbrcz