Bonsoir tout le monde,
Voici mon problème: je développe sur XE7 et lorsque j'appelle la méthode free de ma classe, l'objet reste en mémoire et finit par provoquer des erreurs de ressources insuffisantes.
Je libère bien tous les membres dans le destructeur, puis je les force à nil (car ils sont toujours là qd j'évalue le code) mais sans succès
Dans cet exemple, à la fin de la procédure test, l'attribut variable.fattribut2 est bien à nil mais variable n'est pas libéré alors que ce devrait être le cas.
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 type tclasse1=class(tObject) private fattribut1:int; public destructor destroy;override; constructor create; end; type tclasse2=class(tObject) private fattribut2:tclasse1; public destructor destroy;override; constructor create; end; constructor tclasse1.create; begin fattribut1=1; end; constructor tclasse2.create; begin fattribut2=tclasse1.create; end; destructor tclasse2.destroy; begin if fattribut2<>nil then fattribut2.free; end; procedure test; var variable:Tclasse2; begin variable:=Tclasse2.create; variable.free; end;
Avez-vous une piste?
Partager