Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ungültige Zeigeroperation (FreeMem)

  Alt 1. Okt 2016, 12:27
Ich wundere mich, daß das überhaupt je funktioniert haben soll.

Move(Msg, Buffer, dwSize);
kopiert den Pointer auf einen Text (= eine String-Variable) in einen untypisierten Pointer, aber nicht den Textinhalt in den Speicherbereich, auf den der Pointer zeigt. Das spätere FreeMem gibt dann also Speicher frei, der eigentlich der string-Variablen gehört.

Müsste es nicht eher so heißen:

Move(Msg[1], Buffer^, dwSize);

Ähnlich auch bei WriteFile

WriteFile(FHandle, Buffer^, dwSize, dwBW, nil);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat