Notification de fuite de mémoire dans Delphi à la sortie du programme

Toutes les versions de Delphi depuis Delphi 2006 ont un gestionnaire de mémoire mis à jour qui est plus rapide et plus riche en fonctionnalités.

L'une des plus belles fonctionnalités du "nouveau" gestionnaire de mémoire permet aux applications d'enregistrer (et de désenregistrer) les fuites de mémoire attendues et de signaler éventuellement des fuites de mémoire inattendues à l'arrêt du programme.

Lors de la création d'applications WIN32 avec Delphi, il est impératif de s'assurer que vous libérez tous les objets (mémoire) que vous créez dynamiquement.

Une fuite de mémoire (ou de ressource) se produit lorsque le programme perd la capacité de libérer la mémoire qu'il consomme.

Signaler des fuites de mémoire lors de l'arrêt

La détection et le signalement des fuites de mémoire sont définis sur faux par défaut. Pour l'activer, vous devez définir la variable globale ReportMemoryLeaksOnShutdown sur TRUE.

Lorsque l'application est fermée, en cas de fuites de mémoire inattendues, l'application affiche la boîte de dialogue "Fuite de mémoire inattendue".

Le meilleur emplacement pour ReportMemoryLeaksOnShutdown serait dans le fichier de code source (dpr) du programme.

 commencer   ReportMemoryLeaksOnShutdown: = DebugHook 0;   // source "par" Delphi   Application.Initialize; Application.MainFormOnTaskbar: = True; Application.CreateForm (TMainForm, MainForm); Application.Run; fin. 

Remarque: une variable globale DebugHook est utilisée ci-dessus pour s'assurer que les fuites de mémoire sont affichées lorsque l'application est exécutée en mode débogage - lorsque vous ajustez F9 à partir de l'IDE Delphi.

Test Drive: détection de fuite de mémoire

Ayant ReportMemoryLeaksOnShutdown défini sur TRUE, ajoutez le code suivant dans le gestionnaire d'événements OnCreate du formulaire principal.

 var   sl: TStringList; commencer   sl: = TStringList.Create; sl.Add ('Fuite de mémoire!'); fin; 

Exécutez l'application en mode débogage, quittez l'application - vous devriez voir la boîte de dialogue de fuite de mémoire.

Remarque: Si vous recherchez un outil pour détecter les erreurs de votre application Delphi telles que la corruption de mémoire, les fuites de mémoire, les erreurs d'allocation de mémoire, les erreurs d'initialisation de variable, les conflits de définition de variable, les erreurs de pointeur… jetez un œil à madExcept et EurekaLog

Delphi Tips Navigator

  • Requêtes SQL de date et heure: formatage des valeurs de date et heure pour Access SQL dans Delphi
  • Forcer le mode d'édition de TListView à l'aide d'un raccourci clavier