[DELPHI 5] Libérer une structure quand on a son pointeur
Bonjour,
En Delphi , j'utilise un objet TVirtualStringtree
pour stocker des éléments dans un arbre.
À chaque élément Node : PVirtualNode de mon arbre, j'associe une structure complémentaire
que j'ai créée dynamiquement lors de la création de chaque Node grâce à la propriété Data.
voici un résumé de mon code pour être plus clair :
...
Code:
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
|
type
TTreeDataGeneral = record
type_node : integer;
Father : TTreeDataFather;
Child : TTreeDataChild;
Modified : boolean;
Text: string;
ImageIndex: Integer;
...
end;
PTreeDataGeneral = ^TTreeDataGeneral;
procedure TfmMessages.creation_node_pere(Q : TZIbSqlQuery);
var
NodeData: PTreeDataGeneral;
Nodepapa: PVirtualNode;
begin
// create tree
// je reserve la place necessaire pour chaque node, on utilise la taille de la structure déclaré TTreeData
Tree_messages.NodeDataSize := SizeOf(TTreeDataGeneral);
// initialise un node
Nodepapa := Tree_messages.AddChild(nil);
// récupère l'adresse de data
NodeData := Tree_messages.GetNodeData(NodePapa);
...
end; |
Mon problème : depuis quelque temps, le nombre de données affiché dans l'arbre a considérablement augmenté et
après plusieurs heures d'utilisation du logiciel ( plusieurs chargements de l'arbre), une erreur "mémoire insuffisante" s'affiche.
Le logiciel monte à 60 mo d'espace ram.
Je pensais que lorsque de détruisait l'arbre ou la fenêtre de l'arbre, un free était fait sur mes structures.
Comment faire pour libérer une structure quand on a son pointeur ? Merci.