Fonction récursive et débordement
gérard
-
Edwyn Messages postés 105 Statut Membre -
Edwyn Messages postés 105 Statut Membre -
Bonjour, 2 petites questions svp:
1. connaissez vous une adresse où il y a une schéma relativement simple et à jour de l'état de la mémoire d'un ordinateur moderne lorsque qu'une fonction récursive s'éxécute, avec genre pile, variables locales...
2. lorsqu'une qu'une fonction récursive fait trop d'appels pour la mémoire du pc, quelle partie de la mémoire sature?
merci pour les précisions.
1. connaissez vous une adresse où il y a une schéma relativement simple et à jour de l'état de la mémoire d'un ordinateur moderne lorsque qu'une fonction récursive s'éxécute, avec genre pile, variables locales...
2. lorsqu'une qu'une fonction récursive fait trop d'appels pour la mémoire du pc, quelle partie de la mémoire sature?
merci pour les précisions.
A voir également:
- Fonction récursive et débordement
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
1 réponse
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 ;)
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?
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
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...