Notifica di perdita di memoria in Delphi all'uscita dal programma

Tutte le versioni di Delphi dal Delphi 2006 hanno un gestore di memoria aggiornato che è più veloce e ricco di funzionalità.

Una delle più belle funzionalità del "nuovo" gestore di memoria consente alle applicazioni di registrare (e annullare la registrazione) delle perdite di memoria previste e, facoltativamente, di segnalare perdite di memoria impreviste all'arresto del programma.

Quando si creano applicazioni WIN32 con Delphi è indispensabile assicurarsi di liberare tutti gli oggetti (memoria) creati dinamicamente.

Si verifica una perdita di memoria (o risorsa) quando il programma perde la capacità di liberare la memoria che consuma.

Segnala perdite di memoria all'arresto

Il rilevamento e la segnalazione di perdite di memoria sono impostati su false per impostazione predefinita. Per abilitarlo, è necessario impostare la variabile globale ReportMemoryLeaksOnShutdown su TRUE.

Quando l'applicazione viene chiusa, se si verificano perdite di memoria impreviste, l'applicazione visualizzerà la finestra di dialogo "Perdita di memoria imprevista".

Il posto migliore per ReportMemoryLeaksOnShutdown sarebbe nel file del codice sorgente (dpr) del programma.

 inizio   ReportMemoryLeaksOnShutdown: = DebugHook 0;   // fonte "di" Delphi   Application.Initialize; Application.MainFormOnTaskbar: = True; Application.CreateForm (TMainForm, MainForm); Application.Run; fine. 

Nota: sopra viene utilizzata una variabile globale DebugHook per assicurarsi che le perdite di memoria vengano visualizzate quando l'applicazione viene eseguita in modalità debug - quando si adatta F9 dall'IDE Delphi.

Test Drive: rilevamento perdite di memoria

Avendo ReportMemoryLeaksOnShutdown impostato su TRUE, aggiungi il codice seguente nel gestore eventi OnCreate del modulo principale.

 var   sl: TStringList; inizio   sl: = TStringList.Create; sl.Add ('Perdita di memoria!'); fine; 

Esegui l'applicazione in modalità debug, esci dall'applicazione: dovresti visualizzare la finestra di dialogo Perdita di memoria.

Nota: se stai cercando uno strumento per rilevare gli errori dell'applicazione Delphi come corruzione della memoria, perdite di memoria, errori di allocazione della memoria, errori di inizializzazione delle variabili, conflitti di definizione delle variabili, errori del puntatore ... dai un'occhiata a madExcept ed EurekaLog

Delphi Tips Navigator

  • Query SQL data / ora: formattazione dei valori data-ora per Access SQL in Delphi
  • Forza la modalità di modifica di TListView usando una scorciatoia da tastiera