Stack Overflow

Sujets variés concernant le développement en PureBasic
Twix
Messages : 46
Inscription : mer. 07/sept./2005 10:58

Stack Overflow

Message par Twix »

J'ai rencontré une erreur 'Stack Overflow' qui veut dire, je crois, Pile remplie ou un truc dans le genre. La pile, je crois que c'est une sorte de registre du processeur. Mais je n'en sais pas plus. D'où vient cette erreur ?

ça à fait ramer Pure, puis, quand j'ai ouvert la fenetre d'Appels Memoire, ça l'a fait completement planter, obligé de cétéairellaltsupprimer, mon gros ventilo de processeur s'est mis en plein régime en faisant autant de bruit q'un aspirateur.
Twix : au secours, vlà les bugs qu'arrivents !!
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

çà arrive si une procedure s'appelle elle meme (appel récursif) sur une profondeur trop importante.

ou dans ce cas par exemple.
ici on créé une variable trop volumineuse dans une procedure pour qu'elle rentre dans la stack.

Sur mon PC, avec #TAILLE > 14000 octets çà plante.

Code : Tout sélectionner

#TAILLE = 12000
;#TAILLE = 30000

Structure TEST
  entier.b[#TAILLE]
EndStructure

Procedure.s test()
  
  Protected resultat.s
  Protected variable.TEST
  
  If variable 
    resultat = "ok"
  Else
    resultat = "échec"
  EndIf
  
  ProcedureReturn resultat
  
EndProcedure


Debug "début"
Debug test()
Debug "fin"
Image
Twix
Messages : 46
Inscription : mer. 07/sept./2005 10:58

Message par Twix »

Il s'agit bien d'une procedure, qui plus est récursive
Merci ! Vé essayer de trouver combien fois on peut s'apeller soi-même.
Twix : au secours, vlà les bugs qu'arrivents !!
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

attention dans ton enquete,

la procedure peut s'appeler à l'infini, c'est pas le probleme.

le probleme, c'est la profondeur des appels.

fonction()
---fonction()
------fonction()
---------fonction()
------------fonction()
---------------fonction()
------------------fonction() ...

:roll:
Image
Répondre