Fuite de memoire

lelahel08 Messages postés 36 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 24 octobre 2005 - 6 oct. 2004 à 13:38
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 - 10 oct. 2004 à 12:47
Bonjour,

J'ai une appli MDI, lors de son ouverture et une fois chargé sans sous fenetre, dans le gestionnaire de taches le processus fait : 15,7Mo, lors de l'ouverture d'une sous fenetre le processus grossit pour atteindre 18,5 Mo, mais lors de la fermeture de cette sous fenetre je ne gagne que 350Ko et mon appli atteind 18,1Mo ......

Quelqu'un a une explication des conseils ? Je pense libérer correctement tout mes objets .....

Merci d'avance

8 réponses

florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
6 oct. 2004 à 14:05
Pour liberer la memeoir eallouee aux objets il faut utiliser la methode Free.
Pour les forms il faut faire
Form1.Release;


J'espere t'avoir aidé ..
Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
0
lelahel08 Messages postés 36 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 24 octobre 2005
6 oct. 2004 à 14:16
Il y a d'office dans une appli MDI les methodes du style :

procedure TfFicheTaches.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;

Normalement pas de release a faire ... si ?

sinon je fait des free sur mes objets correctement pourtant ...
0
lelahel08 Messages postés 36 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 24 octobre 2005
6 oct. 2004 à 14:19
J'ai essayé ceci :

procedure TfFicheTaches.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
Release;
end;

... sans succes ....
0
lelahel08 Messages postés 36 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 24 octobre 2005
6 oct. 2004 à 14:32
Pour être plus complet :

Ouverture Appli
=> 15752

ouverture SousFenetre
=> 18412

Fermeture SousFenetre
=> 18100

Ouverture SousFenetre
=> 19848

Fermeture SousFenetre
=> 19728
0

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

Posez votre question
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
7 oct. 2004 à 08:58
Hello,

Je t'avouerai que j'ai le même souci que toi. J'ai posté un message aussi à une époque et les réponses ont étées les mêmes.
Je détruit bien la totalité de mes objets et rien n'y fait. Au fur à mesure de l'utilisation du programme son taux de mémoire augmente.
J'ai remarqué qu'en utilisant un programme de défragmentation de mémoire "rambost xp" et bien la comme par miracle quand je le lance mon programme prends beaucoup moins de place mémoire.
Voilà je suis désolé de ne pas pouvoir t'apporter de solutions à ton problème mais je voulais de faire part de ces quelques remarques.

Bonne prog,
JMP.
0
lelahel08 Messages postés 36 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 24 octobre 2005
7 oct. 2004 à 09:55
Très intéressant, merci

On verra si quelqu'un peut nous renseigner alors !!
0
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
9 oct. 2004 à 21:04
Je sais pas je vai peu être dire une grosse bêtise mais peu être que utiliser "destroy" peut marcher.....

procedure TfFicheTaches.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
destroy; // je sais pas si toutes les lignes sont nécessaires
Release;
end;
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
10 oct. 2004 à 12:47
C'est bête d'appeler Release une fois la fiche detruite ...
Violation D'acces.

Free verifie que l'objet ne pointe pas sur NIL et appele destroy

Je crois qu'il existe une directive de compilation que permet de gerer la memoire mais dans ce cas il faut aussi l'allouer et la gerer :sad)

Donc c'est pas gagne

florent

Si tu ne te plantes pas ......
tu ne poussera jamais
0
Rejoignez-nous