Thema: Delphi StrAlloc verstehen

Einzelnen Beitrag anzeigen

jbg

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

Re: StrAlloc verstehen

  Alt 1. Aug 2007, 18:43
Zitat von sirius:
Bei Delphi schon. Denn dadurch kannst du einfach StrDispose(myPchar) machen, ohne dir die Länge gemerkt zu haben. Ist quasi ein "advanced PChar".
Falsch. Die 4 Bytes davor stammen noch von Turbo/Borland Pascal. Dort musste man bei FreeMem noch die Allozierungsgröße angeben. StrAlloc/StrDispose arbeitet nur so, weil es abwärts kompatibel ist, wie man an StrDispose mit dem FreeMem(P, Size) sieht. Die Länge für FreeMem kennt der Speichermanager selbst, da er diese Information selbst verwaltet, ggf. sogar direkt vor dem Reservierten Speicherbereich, wodurch folgendes entsteht:
[MemSize: 4 Bytes][Size: 4 Bytes][Data: (Size - 4) Bytes]
  Mit Zitat antworten Zitat