Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 29-01-2019, 18:36:26

Název: FMM4 - neuvoľnená pamäť
Přispěvatel: Stanislav Hruška 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
Název: Re:FMM4 - neuvoľnená pamäť
Přispěvatel: Radek Červinka 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.
Název: Re:FMM4 - neuvoľnená pamäť
Přispěvatel: Stanislav Hruška 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.
Název: Re:FMM4 - neuvoľnená pamäť
Přispěvatel: Stanislav Hruška 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.
Název: Re:FMM4 - neuvoľnená pamäť
Přispěvatel: pf1957 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.
Název: Re:FMM4 - neuvoľnená pamäť
Přispěvatel: Stanislav Hruška 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.
Název: Re:FMM4 - neuvoľnená pamäť
Přispěvatel: Stanislav Hruška 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.
Název: Re:FMM4 - neuvoľnená pamäť
Přispěvatel: pf1957 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..."