Quel est le meilleur outil pour détecter les fuites de mémoire dans Delphi [fermé]

Quel est le meilleur outil pour détecter les fuites de mémoire.

à la Fois libre et pas Libre.

Merci

24
demandé sur Bruce McGee 2009-01-06 13:33:41

9 réponses

nous utilisons EurekaLog à notre travail à Delphi 7. C'est un composant de gestionnaire d'exception qui donne des informations très détaillées sur les exceptions (y compris callstack! variables d'environnement, etc.), même pour les violations de l'accès. Mais une autre grande caractéristique est que vous pouvez lui dire d'erreur sur les fuites de mémoire aussi, qui montre la ligne exacte du code où la mémoire/objet a été alloué en premier lieu! C'est un commerical produit mais je voudrais encore vous recommandons fortement il.

19
répondu CodeAndCats 2009-01-06 20:53:16

FastMM est un détecteur de fuites de mémoire libre (source disponible), déjà intégré dans les dernières versions de Delphi. Je n'ai jamais eu besoin de rien d'autre.

il est beaucoup mieux BTW pour limiter les possibilités de fuites de mémoire lors du codage, au lieu de les trouver plus tard. Quelques conseils:

Utilisez toujours try et finalement dans votre code pour libérer les objets créés. Il est préférable d'écrire ce code immédiatement, puis d'écrire du code pour utiliser les objets. Encore mieux utiliser la fonctionnalité IDE comme les Modèles de Code.

n'utilisez que des fonctions qui renvoient des objets alloués dynamiquement lorsque cela est absolument nécessaire. Il est généralement préférable de passer des objets comme paramètres que de les créer et de les retourner. Par exemple ce

procedure getChoices(var AChoices: TStrings);

serait beaucoup mieux que

function getChoices: TStrings;

puisqu'il n'y a pas de risque de fuite accidentelle de L'objet TStrings créé.

36
répondu mghie 2009-01-06 10:50:29

je recommande la version complète FastMM4-plutôt que la version incluse dans Delphi. La version complète vous donne un rapport complet et verbeux connecté au fichier au lieu de la boîte de dialogue. Combinez ça avec un "memoryleak-logfile-differ" que vous êtes prêt à quitter.

14
répondu Vegar 2009-01-06 13:06:26

AQTime est très bonne. Il fait aussi d'autres choses comme le profilage pour la performance. Et il ne nécessite aucune modification de votre code. Bien sûr, compiler avec debug info aide à donner de meilleurs résultats.

13
répondu Lars Truijens 2009-01-06 11:24:54

j'utilise toujours ReportMemoryLeaksOnShutdown : = (DebugHook < > 0); pour que les fuites ne soient signalées que si je débogue.

ps voulait le mettre dans un commentaire mais je n'ai pas les droits encore..

9
répondu Michiel T 2012-12-20 15:50:34

vous pouvez jeter un oeil à cette session de CodeRage 2: la Lutte contre les Fuites de Mémoire pour les Nuls. Il montre principalement comment utiliser FastMM pour prévenir / détecter les fuites de mémoire dans Delphi. Était pour D2007 mais toujours pertinent pour D2009.

7
répondu François 2009-01-06 20:46:26

FastMM est très bon. Je connais 3 ou 4 gestionnaires de mémoire libres pour Delphi. Il faut moins d'une heure pour les vérifier tous, parce que généralement ils ne nécessitent que 3 lignes de code pour les intégrer dans le projet.

7
répondu 2009-01-08 03:38:53

j'utilise MadExcept parce que c'est gratuit pour une utilisation personnelle.

4
répondu rajeemcariazo 2010-08-25 15:08:17

UMLD 1.0 Nous avons essayé et testé!! Solution intelligente pour un développement D'Application Delphi sans fuite et outil de rapport de bogues pour le développement Delphi.

http://www.torry.net/authorsmore.php?id=7616&sort=ID

1
répondu Mangirish Salelkar 2012-08-13 12:23:24