Zitat von
DJ-SPM:
Wäre doch anders viel einfacher...
Das schon, aber dann hast du wieder dasselbe Problem mit den zwei Speichermanagern. Den PChar hast du in der
DLL reserviert und gibst ihn im Hauptprogramm irgendwann mal frei. Und solltest du ihn dort nicht freigeben, wird der PChar trotzdem beim Entladen der
DLL ungültig. Mit dem "Reinkopieren" in den vom Hauptprogramm reservierten PChar umgehst du dieses Problematik.
Aber es geht auch so wie du sagst, wenn du bei der
DLL zusätzlich die FreeMem Funktion exportierst:
Delphi-Quellcode:
procedure DllFreeString(P: PChar);
begin
FreeMem(P); // oder wenn du StrNew/StrAlloc benutzt hast: StrDispose(P)
end;
exports
DllFreeString;