Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#22

Re: Stringübergabe via Pointer - Mach ich was falsch?

  Alt 7. Mär 2007, 23:01
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;
  Mit Zitat antworten Zitat