Powiadomienie o wycieku pamięci w Delphi przy wyjściu z programu
monsitj / Getty Images
Wszystkie wersje Delphi od Delphi 2006 mają zaktualizowany menedżer pamięci, który jest szybszy i bogatszy w funkcje.
Jedna z najprzyjemniejszych funkcji „nowego” menedżera pamięci umożliwia aplikacjom rejestrowanie (i wyrejestrowywanie) oczekiwanych wycieków pamięci i opcjonalnie zgłaszanie nieoczekiwanych wycieków pamięci przy zamykaniu programu.
Podczas tworzenia aplikacji WIN32 w Delphi konieczne jest upewnienie się, że wszystkie obiekty (pamięć), które tworzysz dynamicznie, są zwalniane.
Wyciek pamięci (lub zasobów) występuje, gdy program traci możliwość zwalniania zużywanej pamięci.
Zgłaszanie wycieków pamięci podczas wyłączania
Wykrywanie i raportowanie wycieków pamięci są domyślnie ustawione na wartość false. Aby go włączyć, musisz ustawić zmienną globalną ReportMemoryLeaksOnShutdown na TRUE.
Po zamknięciu aplikacji, jeśli wystąpią nieoczekiwane wycieki pamięci, aplikacja wyświetli okno dialogowe „Nieoczekiwany wyciek pamięci”.
Najlepszym miejscem na ReportMemoryLeaksOnShutdown byłby kod źródłowy programu (dpr) plik.
|_+_|Uwaga: zmienna globalna DebugHook jest używana powyżej, aby upewnić się, że wycieki pamięci są wyświetlane, gdy aplikacja jest uruchomiona w trybie debugowania - po dopasowaniu F9 z Delphi IDE.
Jazda testowa: wykrywanie wycieków pamięci
Mając ReportMemoryLeaksOnShutdown ustawioną na TRUE, dodaj następujący kod w procedurze obsługi zdarzeń OnCreate formularza głównego.
|_+_|Uruchom aplikację w trybie debugowania, wyjdź z aplikacji - powinieneś zobaczyć okno dialogowe wycieku pamięci.
Uwaga: Jeśli szukasz narzędzia do wyłapywania błędów aplikacji Delphi, takich jak uszkodzenie pamięci, wycieki pamięci, błędy alokacji pamięci, błędy inicjalizacji zmiennych, konflikty definicji zmiennych, błędy wskaźników ... spójrz namadZ wyjątkiemi EurekaLog
Nawigator porad Delphi
- Zapytania SQL Data i godzina: formatowanie wartości daty i godziny dla Access SQL w Delphi
- Wymuś tryb edycji TListView za pomocą skrótu klawiaturowego