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]