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ă.
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.
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