Bonjour,
je voudrais savoir quelle est concrètement la différence entre créer un objet sur la pille ou sur le tas.
Merci
Bonjour,
je voudrais savoir quelle est concrètement la différence entre créer un objet sur la pille ou sur le tas.
Merci
Un objet créé sur la pile sera détruit dès la sortie de la portée dans laquelle il est déclaré.
Un objet créé sur le tas ne sera détruit que lorsque tu utiliseras delete.
Une différence qui peut également jouer est que la pile a une taille très limitée.
Il y a aussi une différence de vitesse à l'execution. Créer sur la pile c'est immédiat et ça marche à tous les coups (ou presque, mais si ça ne marche pas tu n'es plus là pour le voir), créer sur le tas demande plus de travail (trouver une place libre, tenir une table à jour, vérifier que la demande a été satisfaite).
Sera-t-il detruit lors de l'arret du programme ?Envoyé par Laurent Gomila
Les objets ne seront pas détruits (ie. leur destructeur ne sera pas appelé) mais à part ça tout bon OS libérera la mémoire à la fin du programme.Envoyé par _LVEB_
Donc autant dire qu'il ne vaut mieux pas compter sur l'OS, et libérer proprement les objets alloués dans ton programme.
Pour allouer sur la pile, tu auras besoin de connaître la taille à allouer à la compilation, alors que pour l'allocation dynamique il suffit de connaître cette taille à l'execution.
Edit: correction.
Ah? J'avais compris que dynamique==tas==new/delete et statique==pileEnvoyé par loufoque
Mais ensuite, l'enjeu est de bien désallouer toute la mémoire précédemment allouée!
No Leak!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager