Bonjour,
Je constate dans mon application que la commande "free" ne libère pas forcément la mémoire associée à un objet.
voici un exemple de code:
Après l'appel "monObjet.free", la variable ne passe pas à nil. Sa propriété componentState passe à csDestroying mais l'objet reste en mémoire, comme s'il attendait un garbageCollector.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 var monObjet:TSQLStoredProc; begin monObjet:=TSQLStroredProc.create(nil); with monObjet do begin SQLConnection:=maConnexion; storedprocname:=maprocedure; open; //ici traitement des données lues end; monObjet.close; monObjet.free; end;
Résultat, lorsque la procédure est appelée en boucle, la mémoire sature et je finis par avoir l'erreur "mémoire insuffisante"
Existe-t-il un moyen de forcer la destruction de cet objet?
Partager