Outils d'utilisateurs

Outils du Site


pile_et_tas

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

pile_et_tas [2015/05/07 21:45]
davidbrcz [Organisation de la mémoire]
pile_et_tas [2015/08/03 11:03] (Version actuelle)
gbdivers ancienne révision restaurée
Ligne 18: Ligne 18:
 ===== Durée de vie et portée ===== ===== Durée de vie et portée =====
 Au moment de la création d'une variable, le compilateur va automatiquement réserver de la mémoire dans la pile  Au moment de la création d'une variable, le compilateur va automatiquement réserver de la mémoire dans la pile 
-pour cette dernière. La pile n'ayant pas une taille infinie, il est important qu'il puisse libérer cette mémoire le plus tôt possible. Il peut le faire à partir du moment où le flux d’exécution sort du bloc où la variable a été déclarée. La destruction des variables allouées sur la pile se fera dans l'ordre inverse de leur déclaration.+pour cette dernière. La pile n'ayant pas une taille infinie, il est important qu'il puisse libérer cette mémoire le plus tôt possible. Il peut le faire à partir du moment où le flux d’exécution sort du bloc où la variable a été déclarée et c'est ce qui a été choisiCette propriété est à la base de la gestion automatique de la mémoire du tas via le RAII. 
 + 
 +A noter que la destruction des variables allouées sur la pile se fera dans l'ordre inverse de leur déclaration. 
  
 Dans l'exemple ci dessous, le flux d'exécution commence à //main//. La première accolade ouvrante déclare un nouveau bloc qui se termine à l'accolade fermante correspondante 5 lignes plus bas. La première instruction de ce bloc est la création d'une variable //a//. Le flux d'exécution rentre alors dans un nouveau bloc, qui se termine 3 lignes plus bas. Dans ce bloc, on va créer les variables //b// et //c// avant d'en sortir. Au moment de la sortie du bloc, //c// puis //b//. Le flux rencontre ensuite la fin du premier bloc, où il va procéder alors à la destruction de //a//. Dans l'exemple ci dessous, le flux d'exécution commence à //main//. La première accolade ouvrante déclare un nouveau bloc qui se termine à l'accolade fermante correspondante 5 lignes plus bas. La première instruction de ce bloc est la création d'une variable //a//. Le flux d'exécution rentre alors dans un nouveau bloc, qui se termine 3 lignes plus bas. Dans ce bloc, on va créer les variables //b// et //c// avant d'en sortir. Au moment de la sortie du bloc, //c// puis //b//. Le flux rencontre ensuite la fin du premier bloc, où il va procéder alors à la destruction de //a//.
pile_et_tas.1431027948.txt.gz · Dernière modification: 2015/05/07 21:45 par davidbrcz