Infos sur la pile et le tas

clempar55 Messages postés 59 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 4 avril 2007 - 6 déc. 2006 à 18:25
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 7 déc. 2006 à 00:50
Voila je vois souvent sur le forum des phrases telles que "tel objet a
été créé sur la pile/le tas", "tel paramètre a été dépilé".

J'ai enfin décidé d'essayer de comprendre comment marchent et a quoi servent la pile et le tas, ainsi que les differentes déclarations __stdcall ou autres.

Où trouver des information ou des cours?

Merci d'avance

2 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
6 déc. 2006 à 21:22
Un bon livre sur l'assembleur me parait le plus utile pour bien comprendre cela.
(Assembleur X86  CampusPresse (surtout pas celui en poche !))
Sinon internet et les moteurs de recherche !
Bonne chance.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
7 déc. 2006 à 00:50
Salut,
La pile = Stack:
C'est une zone dans l'espace mémoire de l'exécutable. Elle lui est allouée dès son lancement par le système. Elle sert à sauvegarder temporairement des valeurs. Empiler veut dire mettre dans la pile. Dépiler est l'action inverse qui consiste à retirer de la pile. Le pointeur de la pile est incrémenté ou décrémenté selon l'un des deux cas. Le premier élément empilé sera le dernier à être déplilé. Il s'agit du principe LIFO (Last In First Out). La pile est notamment utilisée pour passer des paramètres à une fonction.
Le tas = Heap:
C'est une zone mémoire dans l'espace mémoire de l'exécutable. Elle lui est réservée dès son lancement par le système. Le programme pourra allouer de la mémoire dans le tas pour ses besoins. Par défaut, Windows réserve 1Mo de tas pour chaque programme. Cette valeur augmentera par petits paliers si le programme en demande plus.
__stdcall, __cdecl ou __fastcall  permettent de préciser la convention d'appel d'une fonction. Selon le cas, la pile sera utilisée ou non pour le passage des paramètres. Cela précise également si c'est la fonction qui assure le dépilage ou non.
0
Rejoignez-nous