ALLOCATION DYNAMIQUE DE MEMOIRE POUR LA PILE DANS MASM

Messages postés
37
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
11 mars 2006
- - Dernière réponse : cs_BABASSE
Messages postés
41
Date d'inscription
samedi 23 février 2002
Statut
Membre
Dernière intervention
31 juillet 2007
- 19 juil. 2007 à 17:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/21789-allocation-dynamique-de-memoire-pour-la-pile-dans-masm

cs_BABASSE
Messages postés
41
Date d'inscription
samedi 23 février 2002
Statut
Membre
Dernière intervention
31 juillet 2007
-
Salut,
Je me rappel que sur Atari (devpac) je définissais la taille de la pile dans le source et je me demandais bien comment cela se présentait sur pc. Ben voilà une réponse plus+ que complète, mais je dois avoué qu'il va me falloir un peu de temps pour digérer. En tout cas chapeau, je ne sais pas ou vous trouvez les infos pour faire un truc pareil mais sa mérite un 10.
@+
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
salut,

toute la mémoire du process est mappé en passant par la mémoire paginée que ce soit du code, des données, la pile, le heap, ...

la gestion du heap fait exactement ca, il réserve un bloc de mémoire avec VirtualAlloc, dans ce bloc réservé, une partie est allouée ( comit permet d'associer les blocs de memoire physique au reservations virtuelles ), si tu a besoin, le heap commit s'agrandi et sinon, on libère la memoire physique ( la memoire virtuelle restant réservée ).

ce que je ne comprends pas , c pourquoi le faire dans la pile alors que ca doit se faire dans le heap ?

@++
ToutEnMasm
Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
26 mars 2016
1 -
Salut,
L'allocation dynamique pour la pile doit gérer de la mémoire paginée.La seule fonction mémoire capable de faire ça est virtualalloc qui travaille en adressage linéaire.
la pile sert effectivement pour les variables locales mais aussi pour les variables passées en paramètres.C'est elle qui contient les adresses de retour pour les proc,c'est elle enfin qui permet de faire du debuggage post-mortem par recherche dans son contenu.
Sa grosse faiblesse est qu'en cas de fautes il est extrèmement difficile de ratrapper le programme fautif.
TouEnMasm
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
salut,

l'allocation dynamique ca se fait pas dans le heap ?
y'a pas déjà une fonction pour ca ?
invoke GlobalAlloc,GPTR,cbBloc ?
and eax,eax
je badalloc

la pile, c'est pas pour les variables locales ?

@++
theXman
Messages postés
37
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
11 mars 2006
-
Bravo et merci à toi

je jetterai un oeuil kand le temps m'en laissera le temps...