Zitat von
himitsu:
Zitat von
littleDave:
Wichtig ist dabei: man sollte in der
DLL kein Speicher vor dem
DLL_SetMemoryManager anfordern. Zudem sollte jeder Speicher, der nach dem
DLL_SetMemoryManager angefordert wurde, vor dem
DLL_ResetMemoryManager wieder freigegeben werden.
Und genau da liegt ein großes Problem bei deiner Variante.
Sobald du z.B. die
Unit SysUtils in deinem Projekt hast, wird unweigerlich der
DLL-Eigene Manager schon verwendet, noch bevor du deine DLL_SetMemoryManager aufrufen kannst.
So schlimm ist es nicht, da man vor dem finalization der
DLL (also auch da, wo der Speicher der SysUtils wieder freigegeben wird), die Funktion DLL_ResetMemoryManager aufruft und somit den MemoryManager vom Anfang wieder als aktiv setzt.