Page 1 sur 1

Stack Overflow

Publié : dim. 30/juil./2006 18:39
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.

Publié : dim. 30/juil./2006 19:16
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"

Publié : dim. 30/juil./2006 20:07
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.

Publié : dim. 30/juil./2006 20:17
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: