Dinamikus DLL vs. dialogs unit
2007-03-23T16:57:23+01:00
2007-04-23T15:49:01+02:00
2022-07-27T09:02:52+02:00
Sailing
Sziasztok!

Delphi7 -ben az alábbi problémával szembesültem:
Egy DLL dinamikus töltés/törlés után 4kB "szeméttel" nől a hívó alkalmazás mérete a memóriában akkor, ha a DLL hivatkozik a dialogs unitra!

A dialogs unit az alábbi kódokat futtaja le be ill., kilépéskor:

{ Initialization and cleanup } procedure InitGlobals; var AtomText: array[0..31] of Char; begin HelpMsg := RegisterWindowMessage(HelpMsgString); FindMsg := RegisterWindowMessage(FindMsgString); WndProcPtrAtom := GlobalAddAtom(StrFmt(AtomText, 'WndProcPtr%.8X%.8X', [HInstance, GetCurrentThreadID])); end; initialization InitGlobals; StartClassGroup(TControl); ActivateClassGroup(TControl); GroupDescendentsWith(TCommonDialog, TControl); finalization if WndProcPtrAtom <> 0 then GlobalDeleteAtom(WndProcPtrAtom);

Ha valaki megtudná mondani, hogy mi az ami a "szemetet" generálja, azt nagyon megköszönném.

Üdv, Sailing
Mutasd a teljes hozzászólást!
A Timer-es teszt az nem a legcélratöröbb, de valóban marad ott "szemét", már tapasztaltam. Szerintem nem tudsz ellene tenni, a FreeLibrary()-n kívül.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd