Comprend plus rien moi
Comprend plus rien moi
MD Software
---------------------------
F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi
Bon, ça c'est bon:
ça, ça me gène, tu ne détruis pas le tmp.Elem (TMenuButton) qui reste en mémoire (d'où ta fuite):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TFiledeboutons.afficher(F:PFileElem); begin if F^.Suivant <> nil then begin FLTete(F).Display(FLTete(F).x, FLTete(F).y); afficher(F^.Suivant); end end;
d'où plutôt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure FLDestroy(F: PFileElem); var tmp, tmp2 : PFileElem; begin tmp:= F; while tmp<>nil do begin tmp2:= tmp^.suivant; dispose(tmp); tmp:= tmp2; end;
Là, il n'y a plus de fuite..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 procedure FLDestroy(F: PFileElem); var tmp, tmp2 : PFileElem; begin tmp:= F; while tmp<>nil do begin tmp2:= tmp^.suivant; tmp.elem.free; dispose(tmp); tmp:= tmp2; end;![]()
A moins que afficher modifie F^.Suivant, je ne vois pas comment F^.Suivant peut changer.Envoyé par waskol
MD Software
---------------------------
F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi
Salut MD Software !
haaaaaaaa..... la récursivité...
essaies de voir son code comme ça (code non récursif, donc certainement meilleur pour la pile mémoire (le stack) ) :
Quand il fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TFiledeboutons.afficher(F:PFileElem); begin while F^.Suivant <> nil do begin FLTete(F).Display(FLTete(F).x, FLTete(F).y); F:=F^.Suivant; end end;
Afficher(F^.suivant); dans son code, on rerentre dans la procedure afficher avec F:=F^.suivant, donc F(i)=F(i+1)
Houlàlà, je viens de piger.
J'ai pas de problème avec la récursivité, j'avais juste pas remarqué que la méthode s'appellait afficher. C'est pour ça que j'arrêtais pas de demander à voir le code de afficher.
Faut que j'apprenne à lire !
Bon, j'ai rien dit, pas de sourcis sur afficher
MD Software
---------------------------
F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi
Partager