Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
Delphi 12 Athens
|
AW: Ungültige Zeigeroperation (FreeMem)
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);
|