Fuite de mémoire dans TCustomListBox (TCheckListBoxDataWrapper) [Résolu]

Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
- - Dernière réponse : cs_Loda
Messages postés
900
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.
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
3
Merci
Réponse acceptée

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 206 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Loda