Hab ich jetzt nicht verstanden. Meinst du, das von David Heffernan angesprochene Non-Alignment-Problem ist auch hier die Ursache? Emba legt den Puffer mit einem simplen
SetLength
an. Heißt das, dass der Puffer dann nicht notwendigerweise ausgerichtet ist und dass Emba sich darum nicht kümmert? Selbst wenn - wieso kommt dann ein negatives Ergebnis heraus?
EDIT: Ich habe nun den Test gemacht, den Speicher selbst zu reservieren, und zwar mit
Delphi-Quellcode:
var TB:TBytes;
begin
SetLength(TB, 4778259 * 512);
Und siehe da, Delphi meldet Overflow. Aber wieso? Selbst nach
diesem Beitrag von 2009 müsste die Obergrenze 2 * LongInt sein, was hier ja nicht überschritten wird (und was nicht berücksichtigt, dass LongInt unter 64-Bit Int64 sein sollte).