Wie man den SharedMM einrichtet ist ja egal, hauptsache man macht es, wenn man Speicher über die Grenzen hinweg verwalten will/muß.
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.
Daher wurde z.B. bei ShareMem von Borland der Manager der
DLL in der EXE verwendet, da es sehr leicht möglich ist den Manager in dieser Richtung zu übergeben.
Darum ist auch mal dieser Code entstanden.
Und glaub mir, der ist schon vereinfacht ... also ich vor knapp 2 Jahren mit sowas anfing, da war der Code noch "kompliziert".
http://www.delphipraxis.net/internal...t.php?t=159601
Der Einfachste Weg ist immernoch Borlands ShareMem (borlndmm.dll)
oder man nutzt die Möglichkeiten von FastMM aus, denn dieses läßt sich auch als Shared-MM konfigurieren.