Autor Téma: V jednom prípade mi aplikácia ukončuje s AV  (Přečteno 3475 krát)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2623
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:V jednom prípade mi aplikácia ukončuje s AV
« Odpověď #45 kdy: 23-10-2019, 16:06:53 »
Už to mám. Action := caFree; je potrebné vložiť do formulára, ktorý vlastní podformuláre. Memory leak nie je.
Do riti, AV ostalo. To je snáď začarované.
No ano, na caFree posle formular sam sobe interni message CM_RELEASE a nez se dostane na radu, tak by mely byt obslouzeny vsechny nevyrizene zpravy pro ten formular, pokud mu nekdo neposle odnekud jeste nejake dalsi. Tim to uvolnis a leaky nejsou.

A k tomu AV dochazi, ze se nekdo odnekud odkazuje na neco (formular?), ktery uz byl uvolnen (A k tomu uvolneni nemusi dochazet vzdycky nebo po tom uvolnenem formulari nekdo bude nekdy neco jeste chtit.

Myslim, ze budovat paralelniho spravce viziualnich widgetu neni dobry napad, ze bys to mel nechat na klasickem vlastnictvi komponenty pres Owner a pokud mozno primocary zivotni cyklus vseho, jak uz ti tu tusim Radek psal: kdo vytvari, tak uvolnuje. A pokud tam mas nejake globalni sr*cky, tak zapouzdrit jako singleton a nebo nejlepe eliminovat.


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4575
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:V jednom prípade mi aplikácia ukončuje s AV
« Odpověď #46 kdy: 23-10-2019, 16:21:11 »
Vytvoril som celý formulár odznova a problém zmizol.
Ale aspoň som si uvedomil niektoré vzťahy/veci a vyčistil kód. Čo sa týka ničenia podformulárov.
Všetkým prispievateľom do diskusie ďakujem.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.