Liberer les objet en mémoire

Résolu
Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008 - 7 mars 2007 à 15:03
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 7 mars 2007 à 19:09
Bonjour!

Je viens de réalisé un projet en Delphi, qui fonctionne...

Je voudrait simplement savoir si il y a un moyen de savoir si je libère bien tout les objets en mémoire (MyObjet.Free) ... Etant donné que j'ai l'habitude de Java et son GarbageCollector, il est possible que j'ai oublié de liberer des objet a certains endroits...

Y'a t'il a moyen de le vérifié?

Bien sûr, j'entend sans replongé dans tout le code et verifié ligne par ligne...

Si vous avez une solution pour vérifier ça, se serait sympa!

Merci d'avance!

5 réponses

cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
7 mars 2007 à 15:19
salut,

en général, en relisant les .create et .destroy t'es bon.

mais pour une vrai vérification, il te faut un outils. Je te recommande FastMM4. (indique les class des leaks, adresses, AV sur object freed, ...) : très bon outils.

Aussi, un moyen très simple (et très limité) consiste à regarde la mémoire alloué à ton applic dans le gestionnaire des tâche. Si tu as des fuites (leak) de mémoire, cela devrait augmenter sans raison. (Ce système ne fonctionne pas pour tout les types d'application.)

en passant, je te rappel que c'est une bonne habitude d'affecter "nil" à tes object après les avoir détruit lors du runtime. (cad pour les object crée et détruit durant l'execution du programme). Cela permet d'avoir tes test "assigned" valable.

Bon débug.

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
3
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
7 mars 2007 à 19:09
ouai, j'ai le même. Je m'en préoccupe pas plus que ça. De mémoire, c'est juste un object global de la lib qui n'est pas détruit lorsque l'application se termine. (si  je me rappel bien).

rien de grave.

A+

Loda

PS: penses a cliquer sur réponse accepté au message qui convient. (pour signaler le problème résolu)
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
3
DeltaFX Messages postés 449 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 8 avril 2009 2
7 mars 2007 à 15:50
Une réponse : MemCheck. C'est une unit a rajouter au projet, ca prend trois fois rien à paramétrer. Apres tu executes ton prog, tu le termines et si t'asdes memory leak, une popup va s'ouvrir. Y a une log aussi evidement.

En plus c'est gratos, et c'est écrit en delphi....

Et tu l'aurais trouvé tout seul comme un grand si t'avais cherché 5 minutes dans le forum.

'spice de javateux :p
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
7 mars 2007 à 17:56
Et si tu es sous TurboDelphi, il te suffit de rajouter dans le OnCreate :

System.ReportMemoryLeaksOnShutdown := True

et tu seras averti des fuites ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008
7 mars 2007 à 17:58
@

Loda:




Merci, j'ai tester FastMM4 et en effet c'est plutot sympa pour voir si y'a des "fuites" de mémoire! Ca m'a permis de corrigé quelques oublis de "Destroy"...

Par contre j'ai vu que quoi qu'il arrive (j'ai tester avec une application par defaut),
il y a toujours ses 3 élements:

20bytes TObjectList x3
26bytes TWinHelpViewer x1
53bytes THelpManager x1

Est ce que c'est grave? et d'où cela vient t'il?

Merci en tout cas pour ta reponse!
0
Rejoignez-nous