bonjour,
j'utilise actuellement delphi 7 et je réalise une application qui utilise des composants. Ainsi j'utilise un composant 'TElt' qui derive de la classe label auquel j'ai ajouté quelques attibuts et méthodes. De plus j'ai crée un pointeur sur TElt : PElt.
Ce qui nous donne:
J'ai un autre composant qui derive de la classe panel auquel j'ai aussi ajouté des attributs et des méthodes et qui contient entre autre une liste de 'PElt'. J'ai donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 PElt = ^TElt TElt = Class(TLabel) private IsSelected : Boolean; Entered : Boolean; Couleur : TColor; Position : Integer; ...... end;
J'ai souvent a mettre a jour ma liste a partir d'une base de donnée et donc je fais une requete afin de recevoir les élements que je veux. Avant cette mise a jour, je nettoie donc ma ListeElt de la maniere suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 TLElt = class(TPanel) private ListeElt : TList; Nom : String; ..... end;
puis je recupere les informations de ma base de donnée et les mets dans mon composant TLElt:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 var tmp : PElt; begin While (ListeElt.Count > 0) do begin tmp := Canvas.Extract(Canvas.First); Dispose(tmp); end; end;
Mon soucis provient du fait que mon application a une assez grosse fuite de memoire car au bout de quelques 10aines de minutes, la place prise en mémoire passe de 12mo à + 30 et cela n'a pas l'air de se stabilisé. J'ai chercher d'ou venait la fuite et je me suis apercu que si je commentais le code précedent, la memoire utilisé par mon application se stabilisait a environ 13Mo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 new(tmp); tmp^ := TElt.Create(self); tmp^.Nom := nom; ...... ListeElt.add(tmp);
Quelqu'un aurait'il une idée d'ou peut provenir le probleme ?
Je vous remercie d'avance,
Nicolas.
Partager