Announcement

Collapse
No announcement yet.

Strings und DLLs bzw. Cast PChar to String

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Strings und DLLs bzw. Cast PChar to String

    Hallo,
    ich habe eine Frage zu Strings und DLLs bzw. zum Casting von PChar in String.
    Ich habe eine DLL, die mir einen PChar als Ergebnis liefert. Den Speicherbereich des PChars habe ich vorher selbst angelegt. Anschließend caste ich den PChar in einen String.

    Jetzt meine Frage: Wird bei diesem Cast eine Kopie erstellt oder wird einfach nur mit der Adresse gearbeitet? Wenn eine Kopie erstellt wird, muss der Speicher des PChars wieder freigegeben werden. Wird keine Kopie erstellt, erhöht sich der String-Zähler und der Speicherbereich wird automatisch freigegeben, richtig?

    Zur Veranschaulichung ein bisschen Code:
    Code:
    function Read_STRING(Handle: THandle): string;
    var
    	Buffer: PChar;
    	BufferLength: Int64;
    begin
    	BufferLength := Read_STR(Handle, Nil, 0);
    	GetMem(Buffer, BufferLength + 1);
    	Read_STR(Handle, Buffer, BufferLength);
    	Result := string (Buffer);
    	//FreeMem(Buffer);
    end;
    Entscheidend ist die auskommentierte Zeile. Ist sie nötig oder nicht?
Working...
X