cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
7 août 2007 à 11:56
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 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)
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.
A voir également:
Fuite de mémoire dans TCustomListBox (TCheckListBoxDataWrapper)