Erreur stack overflow
Résolu/Fermé
shaunbaker
Messages postés
9
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
26 septembre 2009
-
28 nov. 2008 à 20:57
Johann74270 - 27 janv. 2011 à 18:16
Johann74270 - 27 janv. 2011 à 18:16
A voir également:
- Code d'erreur : status_stack_overflow
- Erreur 0x80070643 - Accueil - Windows
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
3 réponses
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
28 nov. 2008 à 21:39
28 nov. 2008 à 21:39
Bonsoir,
Le stack overflow, c'est un débordement de pile. La pile est la structure qui contient les données de tes programmes (types primitifs ou objets alloués non dynamiquement, adresses de retour des fonctions...), et est contenue dans la mémoire vive (RAM), en même temps que d'autres structures (tas, espace réservé par ton système...).
Cette pile augmente donc quand tu utilises une nouvelle variable, ou quand tu fais appel à une fonction.
Inversement, quand ta fonction retourne (ou que ta variable n'est plus utilisée et que ton compilateur est assez intelligent pour le savoir et détruire cette variable), ta pile diminue.
Ici ta pile est trop grande : elle a débordé sur l'espace mémoire qui ne lui appartenait pas.
En règle générale, avec la mémoire que possèdent les ordinateurs de nos jours, si tu as ce problème, c'est que tu as un bug dans ton programme (boucle infinie ou appel récursif infini).
Cependant, si ton application est vraiment complexe et que tu as besoin de millions de variables, il est possible que ce soit tout à fait normal, et qu'il faille simplement que tu achètes une nouvelle barrette (mais personnellement, je penche plutôt pour la première solution ;)).
Cordialement,
Le stack overflow, c'est un débordement de pile. La pile est la structure qui contient les données de tes programmes (types primitifs ou objets alloués non dynamiquement, adresses de retour des fonctions...), et est contenue dans la mémoire vive (RAM), en même temps que d'autres structures (tas, espace réservé par ton système...).
Cette pile augmente donc quand tu utilises une nouvelle variable, ou quand tu fais appel à une fonction.
Inversement, quand ta fonction retourne (ou que ta variable n'est plus utilisée et que ton compilateur est assez intelligent pour le savoir et détruire cette variable), ta pile diminue.
Ici ta pile est trop grande : elle a débordé sur l'espace mémoire qui ne lui appartenait pas.
En règle générale, avec la mémoire que possèdent les ordinateurs de nos jours, si tu as ce problème, c'est que tu as un bug dans ton programme (boucle infinie ou appel récursif infini).
Cependant, si ton application est vraiment complexe et que tu as besoin de millions de variables, il est possible que ce soit tout à fait normal, et qu'il faille simplement que tu achètes une nouvelle barrette (mais personnellement, je penche plutôt pour la première solution ;)).
Cordialement,
shaunbaker
Messages postés
9
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
26 septembre 2009
28 nov. 2008 à 21:49
28 nov. 2008 à 21:49
Merci beaucoup pour ces précision en effet je penche aussi pour une récursivité infinie car mal exprimée.Merci beaucoup a vous