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 : Tout sélectionner
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()
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.