IBDataset - Wyciek pamięci

IBDataset - Wyciek pamięci
U3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 2 lata
  • 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
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • 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ć.


edytowany 3x, ostatnio: Patryk27
U3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 2 lata
  • 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
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • 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


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
0

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

crowa
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 8 lat
  • 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


Tomasz Andrzejewski
Delphi (XE3-XE7) framework engineer @ InterLan
MCP: Microsoft SQL Server 2008, Implementation and Maintenance
U3
Mam eurekę, spróbuję i dam znać. Dzieki

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.