, . , (DLL EXE), , , . , , . , GetMem , , , . FreeMem/ , .
, EXE DLL, . EXE DLL-, DLL (PChar), , . EXE, , . EXE , EXE- ! EXE , "" .
DllReleaseString(), DLL DLL .
, , . DLL EXE , DLL- EXE, DLL DLL . , , BOTH DLL EXE- ( !). DLL , EXE - - , DLL "" EXE , EXE ( ).
Therefore, if you want your DLL to be universal, you cannot rely on memory managers talking to each other. Your DLL can be used with EXEs or DLLs that rely on another memory manager, possibly written in another language. Sharing memory managers is only possible when you control all parts of your project and you can explicitly set up the same manager all over the world.