Bonjour,
Je vous explique mon problème: J'ai besoin d'une liste de record contenant elle-même une liste de record (je sais, j'aurais du faire une collection).
En revanche, quand j'appelle Detruit_Liste, ça ne libère pas totalement la mémoire allouée!
Si qqun aperçoit un bug, merci bcp, moi je suis dessus depuis hier!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 type Tgenerale = record nom: String; attribut: String; liste: TList; end; Pgenerale=^Tgenerale; type Tsecondaire = record numero: Integer; nom: String; end; Psecondaire=^Tsecondaire; var lstGenerale = TList; procdure Remplit_Liste; var i: Integer; MonPgenerale: Pgenerale; MonPSecondaire: Psecondaire; begin New(MonPgenerale); Pgenerale(MonPgenerale)^.Nom:= 'Liste Generale'; Pgenerale(MonPgenerale)^.liste:= TList.create; for i:=0 to 1000 do begin New(MonPsecondaire); PSecondaire(MonPSecondaire)^.numero:= i; PSecondaire(MonPSecondaire)^.nom:= 'toto'; Pgenerale(MonPgenerale)^.liste.Add(MonPsecondaire); end; lstGenerale.Add(MonPgenerale); end; procdure Detruit_Liste; begin while lstGenerale.Count<>0 do begin while Pgenerale(MonPgenerale)^.liste.Count<>0 do begin Dispose(Pgenerale(MonPgenerale)^.liste[0]); Pgenerale(MonPgenerale)^.liste.Delete[0]; end; Pgenerale(MonPgenerale)^.liste.Free; Dispose(lstGenerale[0]); lstGenerale.Delete[0]; end; lstGenerale.Free; end;
Partager