Länge 0 klingt eher danach, als wenn es hier ein FreeMem sein soll.
Bei ReallocMem wird es als VAR-Parameter reingegeben, während ReallocMemory den neuen Wert als Result zurück gibt.
Siehe auch
GetMem und
GetMemory.
Ich würde bei Länge 0 es als
Delphi-Quellcode:
FreeMem(FBuffer);
FBuffer := nil;
vermuten, ähnlich eimem FreeAndNil.
Warum hier FreeMem falsch sein soll, hab ich in dem Kommentar nicht verstanden.
Wobei ich auch lieber TBytes bzw. TArray<Byte> und deren automatische Speicherverwaltung verwende, anstatt mit GetMem und Co. rumzuhantieren.
So spare ich mir explizite Ressourcenschutzblöche (Try-Finally) und es kann auch nicht die Freigabe vergessen werden, da sie automatisch passiert. (die bis 16 Byte mehr für das dynamische Array fallen meistens nicht auf)