Genauer dann, wenn man die Kontrolle von Speicher über
DLL-Grenzen hinweg weiter gibt.
z.B. einen String in der EXE oder
DLL erstellen, Diesen an die andere
DLL übergibt (oder andersrum) und drüben dann etwas mit dem String macht, was dessen Verwaltung betrifft.
* verändern (nicht nur die Chars, sondern so, das auch der Speicher des Strings vergrößert/verkleinert/verschoben/freigegeben wird)
* neuen Text zuweisen
* oder die Variable leeren
Bei PChar's gibt man meistens nur einen Zeiger weiter, wo drüben der nur Inhalt (Chars) gelesen oder eventuell auch überschrieben werden, aber ohne dass der Speichermanager den String selbst bearbeiten muß.
Anders kann man das auch über LaufzeitPackages lösen, wo dann sogar die
RTTI und Typen, Funktionen, globale Variablen usw. geshared werden.
-> hier kann man dann also zusätzlich auch noch Delphi-Objekte übergeben.
Bei übergebenen Interfaces, ist sogar selten nötig, da dort im Interface-Objekt Zeiger zu Verwaltungsfunktionen/Speichermanager/usw. des erstellenden Moduls drin hat, womit bei Änderung/Freigabe immer die richtige
DLL/EXE/SpeicherManager die Arbeit übernehmen, egal wo das Interface gerade benutzt wird-
Außerdem helfen ShareMem, SimpleShareMem und Co. auch nur zwischen Delphi-
DLL/EXE.
Oder zu anderen Systeme ala C++Builder oder fremde C++, welche ebenfalls die Schnittstelle des (Simple)ShareMem implementieren/benutzen "könnten".
(aber normal nutzt das nur Delphi untereinander ... und vielleicht noch FreePascal)