Fonction récursive et débordement
Fermé
gérard
-
21 avril 2010 à 19:49
Edwyn Messages postés 105 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 31 mars 2011 - 21 avril 2010 à 21:43
Edwyn Messages postés 105 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 31 mars 2011 - 21 avril 2010 à 21:43
A voir également:
- Fonction récursive et débordement
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction trier excel - Guide
- Fonction couleur excel - Guide
1 réponse
Edwyn
Messages postés
105
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
31 mars 2011
14
21 avril 2010 à 20:54
21 avril 2010 à 20:54
Salut,
https://linux-attitude.fr/public/Schemas/process.png
la memoire (virtuel) de ton process est decouper en 3 grosses zones appele zone text, tas et pile.
la zone de text contient ton binaire et static...
le tas est la ou tu fais tes allocation (qd tu utilise malloc)
Dans la pille se trouve les appel aux fonctions avec leur cadre d'execution, arguments,...
Qd tu par en appel recursif, chaque appel fait grandir ta pile (descendre) et a un moment ca pete ;)
https://linux-attitude.fr/public/Schemas/process.png
la memoire (virtuel) de ton process est decouper en 3 grosses zones appele zone text, tas et pile.
la zone de text contient ton binaire et static...
le tas est la ou tu fais tes allocation (qd tu utilise malloc)
Dans la pille se trouve les appel aux fonctions avec leur cadre d'execution, arguments,...
Qd tu par en appel recursif, chaque appel fait grandir ta pile (descendre) et a un moment ca pete ;)
21 avril 2010 à 21:09
En fait une question toute bête me vient: si mon pc a par exemple 2 Go de mémoire vive, combien d'appels récursifs peut faire ma mémoire au maximum?
21 avril 2010 à 21:21
sur system 32bit il pense tourner avec 4G de memoir disponible.
La relation entre la memoir virtuel et la memoire physique (la ram) est effectue par le Memory Management Unit.
MMU: https://en.wikipedia.org/wiki/Memory_management_unit
De plus il me semble que la taille maximun de la pille est defini par ton system.
Mais si tu arrive a la faire sauter c'est que tu as fait une erreur dans ton programe ou que tu ne devrais pas utiliser une fonction recursive (surtout que c'est gourmand en ressources)
j'espere que ca repond a tes questions, n'hesite pas si tu en as d'autre.
bye
21 avril 2010 à 21:36
21 avril 2010 à 21:43
Apres on peut pas dire cb d'appel recursif tu peux faire car ca depend aussi de la taille de ta fonction dans la pille...