Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Fuites de mémoire ? ou pas ... [ Archives / Exécution ] (florenth)

lundi 24 avril 2006 à 21:27:39 | Fuites de mémoire ? ou pas ...

florenth

Membre Club
Bonsoir les amis,

Je suis en plein développement (jusque là, c'est normal ) et je voulais savoir si mes objets sont bien tous libérés quand je quitte mon programme (là, aussi c'est encore normal).
Pour le moment, je vérifiais juste que, à chaque TObject.Create, il y ait bien un Object.Free d'appelé.
Mais là, j'arrive à un stade où cette technique montre ces limites car:
- Mon unité commence à bien grossir: c'est un peu délicat de s'y pronener ...
- Mes objets "s'échangent" des références vers d'autres objets. Résultat: c'est pas forcément celui qui l'a crée qui le détruit.

Bon, je fais attention de tout bien libérer mais je voulais juste savoir si vous connaissiez (par hazard )  un moyen qui permet de voir s'il y a des futes de mémoires ou autres problèmes du genre.

Merci d'avance !

Si tu ne te plantes pas ......
tu ne pousseras jamais

lundi 24 avril 2006 à 21:56:09 | Re : Fuites de mémoire ? ou pas ...

shining

Réponse acceptée !
tiens previens moi une fois télécharger que je le del !!! http://shining-world.chez.tiscali.fr/download/MemoryLeakTracker.rar

lundi 24 avril 2006 à 22:03:05 | Re : Fuites de mémoire ? ou pas ...

florenth

Membre Club
Je l'ai téléchargé mais pas encore testé.
Ca à l'air sympa. Pourquoi ne pas le laisser en ligne histoire que toutle monde en profite ?

Merci shining, je t'avertirai une fois que je l'aurai testé (pas avant demain)

Si tu ne te plantes pas ......
tu ne pousseras jamais

lundi 24 avril 2006 à 22:50:26 | Re : Fuites de mémoire ? ou pas ...

Delphiprog

Administrateur CodeS-SourceS
Réponse acceptée !
Salut les jeunes

Il y a aussi memproof (gratuit et bien fait).

"c'est pas forcément celui qui l'a crée qui le détruit"
Bien que ce ne soit pas interdit, ce n'est pas une bonne méthode de programmation. Quand ça devient trop complexe, on finit par s'y perdre et ne plus savoir qui est responsable de quoi.

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

mardi 25 avril 2006 à 08:49:04 | Re : Fuites de mémoire ? ou pas ...

florenth

Membre Club
"Bien que ce ne soit pas interdit, ce n'est pas une bonne méthode de programmation. Quand ça devient trop complexe, on finit par s'y perdre et ne plus savoir qui est responsable de quoi."

=> Je suis bien au courant. Mais là, pour le moment, je n'ai pas trouvé d'autre solution. Mais j'y refléchis ...
En attendant, un programme comme celui que tu m'as donné est toujours utile dna sma boite à outils.

Tu dis que c'est pas recommandé, OK. Mais quand on fait ça par exemple :


procedure TFrmPrinc.FormCreate(Sender: TObject);
var
  M: TMyClass;
begin
  FObjLst := TObjectList.Create(True);
// OwnObjects = True;

  M := TMyClass.Create;
  M.Prop1 := 310;

  FObjLst.Add(M);
end;

procedure
TFrmPrinc.FormDestroy(Sender: TObject);
begin
  FObjLst.Free;
end;


Là , c'est bien le cas, non ?
Allez, je lance un 'mini' débat de programmation parce que ça faisait un moment que c'était pas arrivé.

@ ++

Si tu ne te plantes pas ......
tu ne pousseras jamais

mardi 25 avril 2006 à 09:05:58 | Re : Fuites de mémoire ? ou pas ...

florenth

Membre Club
@ Delphiprog: je viens de tester ton programme.
Il est super, mais quand je ferme l'application que j'étudiais, il me dit que la RTL n'a pas fait appel à VirtualFree() ou quelque chose comme ça.
Sinon, à part ça, avant le traitement complexe, j'ai 520 pointeurs. Pendant, ça monte à dix mille (!) et après, ça redescend pile à 520. Ouf ! Pas de fuites de mémoire ?!
Mais dans le "current size" à la ligne "Pointers" la valeur ne redescend pas. Etrange ...

J'ai pas encore lu toute l'aide mais ça me parait bizarre.

@ Shining : devantla qualité dz programme MemProof, je crois que je vais laisser ta solution de côté.

Si tu ne te plantes pas ......
tu ne pousseras jamais

mardi 25 avril 2006 à 14:25:04 | Re : Fuites de mémoire ? ou pas ...

shining

Okay ça fait un moment que j'avais ces codes je voulais en faire profiter les gens bien que je n'ai pas encore eu le temps de faire des tests concernant memdebug.zip voici les commenaites de l'auteur Use of it is very simple - include MemDebug.pas to first line of your project's uses clause. You will need also to enable detailed map in project/options/linker. Compile your project. Run MS WinDbg (available for free download on http://www.microsoft.com/msdn/downloads/ and select programm/open/new/ . After executing you will see string "Dumping memory leaks" and some addresses from top of stack" in form .[]. in command window of WinDbg. il faut mettre cette unité en 1er dans la clause uses !!! ce n'est pas grave car au moins on peut jetter un coup d'oeil au code source tandis que memproof n'est pas public source !!! PS : Delphiprog LOL mais bon chuis un newbie en google :p

mardi 25 avril 2006 à 22:08:29 | Re : Fuites de mémoire ? ou pas ...

Delphiprog

Administrateur CodeS-SourceS

Florenth : on ouvre un nouveau topic ou pas ?

Dans l'exemple que tu donnes, il n'y a pas de problèmes tant que le paramètre OwnsObjects est à vrai.

Ce que je voulais dire, c'est que quand tu écris une fonction qui renvoie une référence sur un objet, là il faut être très vigilant.
var
  Obj: TObject;

function CreateObject: TObject;
begin
  Result := TObject.Create;
end;

procedure Machin;
begin
  Obj := CreateObject;
end;

procedure Truc;
begin
  Obj.Name := 'Bidon';
end;

L'exemple est caricatural mais significatif. Va savoir, dans le déroulement du programme, qui est chargé de détruire la variable globale et à quel moment il faut le faire, sans compter qu'en cas de plantage du programme...  

May Delphi be with you !


Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.


mercredi 26 avril 2006 à 00:08:52 | Re : Fuites de mémoire ? ou pas ...

f0xi

Membre Club Administrateur CodeS-SourceS
un coup de main grand ?

je suis assé bon pour aller depatouiller les "merdiers" dans les codes...

oublis pas aussi de faire un shema papier du genre diagrame ou tout simplement de le faire avec l'outils de delphi...
ça peut etre utile pour s'y retrouver.


mercredi 26 avril 2006 à 10:04:29 | Re : Fuites de mémoire ? ou pas ...

florenth

Membre Club
@ Delphiprog : ouvrir un sujet ? Comment ça ?
Sinon, dans l'exemple que tu donnes, c'est vraiment caricatural, mais tu l'as dit. En plus, il s'agit d'une variable globale ...
Parmi toutes les sources que j'ai, je n'ai pas une seule variable globale (sauf celles des fiches gérées par Delphi bien sur). Tout le reste est dans des classes. C'est comme ça depuis que je comprend cette notion.

@ f0xi: "je suis assé bon pour aller depatouiller les "merdiers" dans les codes...". Attention, tu insinues que ton code est un merdier ... . Sinon, c'est gentil de vouloir m'aider mais je vais pas poster mon unité de 5000 lignes ici.(dont 2500 de commentaires lol)
 
"oublis pas aussi de faire un shema papier du genre diagrame ou tout simplement de le faire avec l'outils de delphi...
ça peut etre utile pour s'y retrouver."
Mais ça, je le fais déjà dans ModelMaker. Mais là, j'étais un peu coincé. Enfin ... j'ai changé quelques trucs et puis j'ai utilisé le programme que donne Delphiprog et là, ça marche.

@ +
Florent

Si tu ne te plantes pas ......
tu ne pousseras jamais


1 2

Cette discussion est classé dans : normal, mémoire, juste, objets, fuites


Répondre à ce message

Sujets en rapport avec ce message

Libération de ressources [ par nicolaspennaneach ] j'ai une application MDI où chaque fenètre enfant possède un thread pour effectuer certaines opérations. Lorsque j'exécute la méthode formclose d'une partager de la mémoire [ par mounjetado ] bonjour,existe-t-il un cours complet et détaillé, avec des exemples, sur l'utilisation des objets de synchronisation , tels que mutex, sémaphores, sec Lecture et écriture en mémoire [ par PHIL63 ] Bonjour à tous et à toutes,Mon souci :J'ai des adresses mémoire pour un logiciel donné et j'aurais besoin d'accèder directement à ces zones mémoire en Acces directe à la mémoire d'une carte SD [ par godardth ] Bonjour,Voici mon problème : je développe une petite application electronique qui utilise une carte SD pour stocker un fichier son (format wave). Ce f Les outils de connections à partir d'un Serveur [ par leader2000 ] Salut!J'ai une question qui paraitrait ''stupide''. Mais elle vaut de l'or pour moi.J'aimerai faire un tout petit programme juste de consultation SEUL Mettre disable juste les samedi et dimanche sur un montcalendar [ par vieuxpere ] Bonjour,Je souhaiterai savoir si c'est possible de mettre juste en disable toutes les dates d'un monthcalendar qui correspondent aux samedi et dimanch serialisation: heritage & évolutivité [ par Guillemouze ] Salut tout le monde,je suis sur un probleme de serialisation de mes objets, et je cherche une maniere efficace pour la sauvegarde/chargement.Ma struct Problème TCollection dans inspecteur d'objets [ par ThWilliam ] Bonjour à tous. Voici mon problème :Je construis un composant qui utilise entre autre un TCollection. Appelons-la "TMyCollection".La Collection doit bonjour... et juste après FormCreate ? [ par akkroch ] Salut les Delphistes,Juste après formcreate, dans lequel on donne la définition de la fiche, quelle est la meilleure procédure pour ecrire automatique numéro de série de USB flash mémoire [ par med1112 ] salut à tous,y a t il un moyen pour obtenir le numéro de série de USB flash mémoire, j'utilise Delphi7.merci


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.