Notificarea scurgerii de memorie în Delphi la ieșirea din program

Toate versiunile Delphi de la Delphi 2006 au un manager de memorie actualizat, care este mai rapid și mai bogat în caracteristici.

Una dintre cele mai frumoase caracteristici ale „noului” manager de memorie permite aplicațiilor să înregistreze (și să înregistreze) scurgeri de memorie așteptate și, în mod opțional, să raporteze scurgeri neașteptate de memorie la închiderea programului..

Când creați aplicații WIN32 cu Delphi, este necesar să vă asigurați că eliberați toate obiectele (memorie) pe care le creați dinamic.

O scurgere de memorie (sau resursă) apare atunci când programul pierde capacitatea de a elibera memoria pe care o consumă.

Raportați scurgerile de memorie la închidere

Detectarea și raportarea scurgerilor de memorie sunt setate ca false în mod implicit. Pentru a o activa, trebuie să setați variabila globală ReportMemoryLeaksOnShutdown la TRUE.

Când aplicația este închisă, dacă există scurgeri de memorie neașteptate, aplicația va afișa caseta de dialog „Scurgere de memorie neașteptată”.

Cel mai bun loc pentru ReportMemoryLeaksOnShutdown ar fi în fișierul cod sursă (dpr) al programului.

 începe   ReportMemoryLeaksOnShutdown: = DebugHook 0;   // sursa "de" Delphi   Application.Initialize; Application.MainFormOnTaskbar: = True; Application.CreateForm (TMainForm, MainForm); Application.Run; Sfârșit. 

Notă: o variabilă globală DebugHook este utilizată mai sus pentru a vă asigura că scurgerile de memorie sunt afișate atunci când aplicația este rulată în modul de depanare - atunci când încadrați F9 din Delphi IDE.

Test Drive: detectarea scurgerilor de memorie

După ce ReportMemoryLeaksOnShutdown este setat la TRUE, adăugați următorul cod în instrumentul principal de gestionare a evenimentelor OnCreate.

 var   sl: TStringList; începe   sl: = TStringList.Create; sl.Add („Scurgere de memorie!”); Sfârșit; 

Rulați aplicația în modul de depanare, ieșiți din aplicație - ar trebui să vedeți caseta de dialog a scurgerii de memorie.

Notă: Dacă sunteți în căutarea unui instrument care să surprindă erorile din aplicația dvs. Delphi, cum ar fi corupția memoriei, scurgeri de memorie, erori de alocare a memoriei, erori de inițializare variabilă, conflicte de definiție variabilă, erori de indicator ... aruncați o privire la madExcept și EurekaLog

Delphi Tips Navigator

  • Data Time Interogări SQL: Formatarea valorilor datei pentru acces SQL în Delphi
  • Forțați modul de editare TListView folosind o comandă rapidă de la tastatură