> I still have not seen a single actual problem mentioned with an
> explanation by what exactly it is caused, only vague hand waving
> warning for strange and inexplicable problems. I'm really interested
> by what these problems are and can be caused. Does every dll have its
> own memory manager data structures and is indeed the problem that
> memory allocated by one is free "to" another (as I described in my
> previous mail)?
>
> That would seem very strange to me though, since this could be easily
> solved by making the RTL/system unit a dynamically linked library and
> linking all other libraries to that (so there is only one system unit
> with only one memory manager).
>
> Or is it something else?
>
>
> Jonas


What I originally thought one of the problems was, when trying to receive a 
function
result, was that the DLL thinks that there is no need to keep the string in the
memory. Why should it, if no other code in the DLL uses the string?  Unless the 
DLL
has some knowledge about the Exe using the string. Does it? Does it know about 
the
reference count that the exe created? When the exe tries to use the function 
result,
it goes in to the DLL space and tries to grab the function result in memory, 
but it
isn't there because the DLL threw it away (unless hte DLL does know about the
reference count the exe created.. does it?). On certain occassions, the DLL 
hasn't
thrown it away and the program runs fine. That was my assumption, but not
neccessarily the correct one.

Can we confirm for sure that above is the wrong assumption?

Where is the "reference count" actually stored anyway, and who as access to the
reference count - just the dll/exe who created the string, or is it accessible 
by
both of them? I do need to learn more about reference count science.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to