Fuite de mémoire dans TCustomListBox (TCheckListBoxDataWrapper)

Résolu
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 7 août 2007 à 11:56
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 7 août 2007 à 11:57
Salut tout le monde,

j'ai trouvé une fuite de mémoire (memory leak) dans le compo TCheckListBox (TCustomListBox). Il pert des TCheckListBoxDataWrapper.

N'ayant trouvé aucune doc sur le net, je me permet de faire un post pour indiquer une solution que j'ai trouvé.

<hr size= "2" width="100%" /> Problème:
lorsque vous utiliser le .Items.AddObject (ou autre méthode qui gère les objects associé). Un TCheckListBoxDataWrapper est créer par objet associé. Ils ne sont pas détruit par le compo lors du free. --> leak.

<hr size ="2" width= "100%" /> Reproduire:
créer un projet vide avec un TCheckListBox (avec au moins une ligne) et un boutton.

procedure TForm2.Button1Click(Sender: TObject);
var k : integer;
begin
  for k : = 0 to CheckListBox1.count-1 do
    CheckListBox1.Items.Objects[k] := CheckListBox1; // <- crée un TCheckListBoxDataWrapper par ligne
end;

<hr size="2" width="100%" /> Solution :
ajouter un CheckListBox1.Clear dans le destroy de la form. (un appel explicite détruit les wrapper)
 
<hr size ="2" width= "100%" />
Mon Context:
Delphi 9.0 (2005)
FastMM4 4.72

Bon code,

Loda

PS: je sais que le forum n'est pas fait pour ça. Mais je me voyais mal
faire un tutoriel. Et pis le but ce que qqun avec le même problème
puisse retrouver l'info. non?

<hr size ="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

1 réponse

cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
7 août 2007 à 11:57
Réponse acceptée
3
Rejoignez-nous