PureBasic

Forums PureBasic
Nous sommes le Mer 13/Nov/2019 18:58

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: Structure + Prototype + Procedure + Tab() = Stack OverFlow
MessagePosté: Sam 30/Aoû/2008 20:43 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Juil/2007 0:13
Messages: 466
Bonjour,
Je suis tombé sur un autre bug embêtant !
En fessant appel à des fonctions via des prototypes, au bout d’un certain temps j’ai ce message : Stack OverFlow

On ré-exécutant le programme tout en vérifiant l’utilisation mémoire, je remarque qu’elle augmente constamment à chaque appel via une variable prototype.

J’enlève la partie des prototypes, et je la teste toute seule dans un code fait pour.
Et rien, aucun bug, tout est normal !
Mais quand je l’implémente dans un autre programme, le bug réapparaît.
Comme si il y’avait une fuite de mémoire quelque part dans les fonctions de PureBasic.

Mais voici à quoi ressemble le bug : (laissez tourner pendant un moment, et vous verrez la fameuse erreur)

Code:
Prototype proto(L.l)

Structure struct
  L.proto
EndStructure

Global plec.l
Global Dim Call.struct(99)
Global Dim Bcode.l(999)
Bcode(0) = 3
Procedure fonction(L.l)
   L=L+L
Call(Bcode(0))\L(1)  ; == pour accélérer l'affichage de l'erreur
EndProcedure
Procedure surcharge(L.l)
   L=L+L
EndProcedure

Call(0)\L = @fonction()
Call(1)\L = @surcharge()
Call(2)\L = @fonction()
Call(3)\L = @fonction()
Procedure execut()
v = 3
fonction(23)
Repeat
fonction(444)
If e <> 12313
surcharge(Random(40))
   surcharge(Random(40))
surcharge(Random(40))
           Call(Bcode(0))\L(1)
   plec = plec + 1
EndIf
Until plec > 1000000000000

EndProcedure

execut()

Au fait, ça ne vient pas de la Récursivité, car dans l’autre code y’en a pas ! Je l’ai utilisé que pour accélérer le processus. je n'arrive pas à trouver la cause ( ici dans cet exemple c'est sûr que c'est la récursivité , mais dans l'autre :? ??? )

Alors vous en pensez quoi ?:!:

Je sais que pour le moment le problème reste toujours obscur, mais je n’arrive pas à le localiser pour donner un exemple ciblé.

Merci.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye