Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    J'ai un message lors de la fermeture de mon appli : Fuite mémoire inattendue
    Bonjour à tous,
    Bon, je suis confronté au message suivant quand je termine mon appli compilée sous Delphi 10.2.3

    Je ne sais pas comment lire ce message ... j'ai juste compris qu'il y avait des fuites mais ...

    Si vous pouvez m'aider ...
    Merci beaucoup
    Delphi 10.2 - Lazarus
    Utilisation de la VCL

  2. #2
    Membre émérite
    Cela signifie qu'a un moment tu créées un TBrush et autres objet que tu ne libères pas.

  3. #3
    Membre régulier
    J'ai fais le tour des .Create ... je n'ai pas créé de TBrush, ni de TPen ... les seules créations sont des StringGrid, des FicIni, des TFileListBox, des TTabSheet, des Tmouse.
    Aie aie aie ...
    Delphi 10.2 - Lazarus
    Utilisation de la VCL

  4. #4
    Rédacteur/Modérateur

    Il faut toujours prendre les fuites mémoires à la sortie du programme avec un certain recul. Simplement parce que la mémoire du processus sera entièrement libérée à sa terminaison (l'OS s'en charge).

    Par contre, si après plusieurs tests sur la durée (principalement des apps tournant 24/24) ces fuites fluctuent/augmentent, là il y a un problème à corriger impérativement.

    Ici les fuites sont liées. Il y a une ImageList qui manifestement ne peut pas (ou n'a pas) être libérée correctement (VA dans un destructeur ou allouée dynamiquement sans être proprement libérée ? A voir)
    Si l'ImageList ne peut pas être libérée, le bitmap qu'elle contient ne l'est pas non plus, ni le canvas de ce dernier, ni sa police, ni sa brosse, ni son pinceau. C'est la cascade !

    Intéresse-toi à cette ImageList et tous les problèmes seront résolus d'un coup

  5. #5
    Membre émérite
    Bonjour,

    Je pense que si cette boite de dialogue s'affiche à la fermeture de l'application c'est parce que l'option ReportMemoryLeaksOnShutdown a été activé.
    Du coup le plus simple est de coupler ça avec FastMM pour récupérer plus d'informations sur ces fuites de mémoires.

  6. #6
    Expert éminent sénior
    madExcept est aussi très bien foutu pour identifier les fuites de mémoire
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre régulier
    Je clos le sujet, j'ai trouvé, non pas la solution, mais ...
    Je déployais mon logiciel en mode débogage, quand je l'ai passé en Release, terminé, plus de message lié à la fuite de mémoire.
    Delphi 10.2 - Lazarus
    Utilisation de la VCL

  8. #8
    Membre régulier
    Citation Envoyé par Paul TOTH Voir le message
    madExcept est aussi très bien foutu pour identifier les fuites de mémoire
    C'est également la méthode que j'utilise pour identifier et corriger les fuites mémoires.
    J'ai passé plusieurs semaines sur une grosse appli à supprimer ces fuites mémoires, c'est parfois un vrai casse-tête !

###raw>template_hook.ano_emploi###