Autor Téma: FMM4 - neuvoľnená pamäť  (Přečteno 833 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4551
  • Karma: 40
    • Verze Delphi: XE7 professional
FMM4 - neuvoľnená pamäť
« kdy: 29-01-2019, 18:36:26 »

Prerábam palikáciu za použitia subform-ov. U mňa štandardným spôsobom. Dostávam oznam o neuvoľnenej pamäti. Všetko sa to týka len komponentov na subform-e. Ešte sa mi to nestalo. Ale čo ja s tým mám?
Ako z toho von?
Časť výpisu z logu:
Aplikace neuvolnila používanou paměť. Bloky malé velikosti (vyjma chyb registrovaných pomocí ukazatelů):
5 - 12 bytů: TObject x 1, TMoveArrayManager<System.Classes.TCollectionItem> x 1, TMoveArrayManager<System.Classes.TComponent> x 10, Neznámá třída x 15
13 - 20 bytů: TThreadList x 1, TChangeLink x 4, TAutoSize x 5, TList x 39, THTMLPictureCache x 5, UnicodeString x 1, Neznámá třída x 6
21 - 36 bytů: TIconImage x 1, TStringTreeOptions x 1, TVTFixedAreaConstraints x 1, TList<System.Classes.TCollectionItem> x 1, TScrollBarOptions x 1, TPanelPosition x 5, TAdvHintInfo x 10, TMemoryStream x 15, TTouchManager x 16, TMargins x 16, TSizeConstraints x 16, TList<System.Classes.TComponent> x 10, TPersistence x 2, TPadding x 14, TBrush x 39, TPen x 25, UnicodeString x 6, Neznámá třída x 44
37 - 52 bytů: TVTDragManager x 1, TGlassFrame x 1, TListBoxStrings x 2, TMemoStrings x 1, TPicture x 1, TFont x 56, UnicodeString x 10, Neznámá třída x 1
53 - 68 bytů: TIcon x 1, TVTDragImage x 2, TLookupSettings x 2, TPanelStatusBar x 5, TBitmap x 37, TAdvImage x 5, UnicodeString x 1, Neznámá třída x 2
69 - 84 bytů: TControlScrollBar x 2, TVirtualTreeColumns x 1, TVTColors x 1, TWorkerThread x 1, Neznámá třída x 2
85 - 100 bytů: TClipboardFormats x 1, TStringList x 14, TGDIPPicture x 10
101 - 116 bytů: TBitmapCanvas x 12, TControlCanvas x 13
117 - 132 bytů: TVirtualTreeColumn x 2, TVTHeader x 1, TBitmapImage x 17
149 - 164 bytů: TPanelCaption x 5, Neznámá třída x 4
485 - 532 bytů: TCustomAdvEditLabel x 2
661 - 740 bytů: TMemo x 1, TListHintWindow x 2
741 - 820 bytů: TListBoxTab x 2
1013 - 1124 bytů: TAdvEdit x 2, TjstAdvPanel x 5
2245 - 2468 bytů: TjstVirtualStringTree x 1
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2394
  • Karma: 103
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:FMM4 - neuvoľnená pamäť
« Odpověď #1 kdy: 29-01-2019, 20:39:39 »
Pravidlo 1, zacni cist od konce výpisu - tj. neuvolňuješ TjstVirtualStringTree, až to najdeš, pak pokračuj dále.
Embarcadero MVP - Czech republic

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4551
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:FMM4 - neuvoľnená pamäť
« Odpověď #2 kdy: 29-01-2019, 21:13:33 »
Ale ja nemám čo uvoľňovať. Všetky komponenty vlastní subform. Sú tam kladené v dobe návrhu. Nič dynamicky. Preto to neviem pochopiť.
A v jednom momente mi to začalo robiť pri všetkých formulároch. Čiže mám tam niekde spoločnú chybu (v nejakom predkovi), ale ja netuším čoho sa chytiť. Inde (iný projekt) mi to beží bez problémov. Aj tu to bolo OK kým som to neprerobil na subform-y.
Samozrejme, že som to aj krokoval. Ale bez úspechu.
« Poslední změna: 29-01-2019, 21:15:10 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4551
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:FMM4 - neuvoľnená pamäť
« Odpověď #3 kdy: 29-01-2019, 21:17:49 »
Ešte doplnok. Pri otváraní subform-ov mi to hádže takúto chybu:
Access violation at address 0856FF30. Write of address 00000001.
Ale program sa preloží bez najmenších problémov. Aj zbehne.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2612
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:FMM4 - neuvoľnená pamäť
« Odpověď #4 kdy: 30-01-2019, 10:08:03 »
Ešte doplnok. Pri otváraní subform-ov mi to hádže takúto chybu:
Access violation at address 0856FF30. Write of address 00000001.
Ale program sa preloží bez najmenších problémov. Aj zbehne.
To s prekladem nema nic spolecneho, to je chyba, ktera vznika az za behu, kdy se odkazujes na pamet, ktera neni radne k danemu ucelu pridelena. O tom, jak se to konkretne projevuje, zalezi na konkrentim obsahu ukazatelu napr. z predchozich operaci.

Jak ti psal Radek - zakladem je ze stack-trace najit misto, kde k inkriminovane operace doslo ev. to okoli protrasovat, neni-li na prvni pohled zrejme, o co se jedna.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4551
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:FMM4 - neuvoľnená pamäť
« Odpověď #5 kdy: 30-01-2019, 10:43:48 »
Nenapísal som, že to je len v dobe návrhu.
Teraz s tým formulárom tvrdo bojujem a boli aj chvíle keď sa oznamy neukázali. Je to žiaľ nad moje sily.
Idem vyskúšať jednu fintu. A to skrytý hlavný formulár, ktorý nebude potomkom TBasalForm. Mám to tak (len nie je skrytý) tam kde mi to funguje.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4551
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:FMM4 - neuvoľnená pamäť
« Odpověď #6 kdy: 30-01-2019, 11:25:12 »
S tým skrytým formulárom to ide 8)  Momentálne nemám sily zisťovať kde robím chybu.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2612
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:FMM4 - neuvoľnená pamäť
« Odpověď #7 kdy: 30-01-2019, 12:03:40 »
Nenapísal som, že to je len v dobe návrhu.
No ale napsal jsi "...Ale program sa preloží bez najmenších problémov..."