IBDataset - Wyciek pamięci

IBDataset - Wyciek pamięci
U3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 196
0

Witam,

ktoś może mi powiedzieć, dlaczego po wykonaniu tych 2 linijek kodu mam wyciek pamięci?

Kopiuj
IBDataSet_Users.Close;
IBDataSet_Users.Open;

Exception:

2.2 Address: 007D3925
2.5 Type : EMemoryLeak
2.6 Message: Application has leaked memory: Total size=372416; Count=13.
2.7 ID : A16C0001
2.11 Sent : 0

Informacje o wyciekach:

|Methods |Details|Stack |Address |Module |Offset |Unit |Class |Procedure/Method |Line |

+Leak #1: Type=Data at $7FCF00E0; Total size=368000; Count=1
00000002
00000002
00000002
00000002
00000002
00000002
00000002
00000002
00000002
00000002
-------------------------------------------------------------------------------------------------------------------------------------
+Leak #2: Type=Data at $063C7810; Total size=1104; Count=3
-------------------------------------------------------------------------------------------------------------------------------------
00000002
00000002
00000002
00000002
00000002
00000002
00000002
00000002
00000002
00000002
-------------------------------------------------------------------------------------------------------------------------------------
+Leak #3: Type=Data at $06482710; Total size=3312; Count=9
-------------------------------------------------------------------------------------------------------------------------------------
00000002
00000002

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

ktoś może mi powiedzieć, dlaczego po wykonaniu tych 2 linijek kodu mam wyciek pamięci?

Bo nie zwolniłeś całej przydzielonej pamięci.
Nic więcej nie jesteśmy w stanie stwierdzić.

U3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 196
0

Ale jak mogłem zwolnić coś, czego nie przydzielałem? To są jedyne 2 linijki kodu które są wykorzystywane w programie. Reszta jest zakomentowana. Nawet OnClose okna zamykam dataset i to samo. Jak zakomentuję te 2 linijki to nie ma MemoryLeak

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0
  1. jak, skąd i kiedy tworzony jest IBDataSet_Users
  2. zamknięcie okna (krzyżykiem, close, ModalResult := mrOK, itp) NIE NISZCZY okna a jedynie je ukrywa. Aby okno zostało zniszczone trzeba albo zwolnić je ręcznie (okno.Free) albo w OnClose dodać linijkę Action := caFree

Zapewne wyciek ten wynika z tego, że komponent jest tworzony przez formę (jest pacnięty na nią) a formy nikt nie niszczy i pamięć po niej zwalniana jest dopiero w momencie zamykania programu

  • Rejestracja: dni
  • Ostatnio: dni
0

Ibdataset leży na formie ma podpiete zapytanie i robię close i open. Okno zwalniam przez cafree. Używam delphi xe3.

crowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 295
0

A zrob cos takiego. Bo widze ze pewnie masz eureka lub madexcept - wywal je z projektu.
Przed Application.Initialize dodaj
ReportMemoryLeaksOnShutdown := True

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.