Wenn sie in irgendeiner Version einmal nicht mit kopiert wurden, war das ein Bug.
Tatsächlich? Ich war die letzten Jahre auf 10.0 Seattle, und da wurden die Padding-Bytes bei einer Zuweisung definitiv nicht mitkopiert. Zu anderen Versionen kann ich nichts sagen. Ist ja auch eigentlich eine gute Sache dass es (jetzt) so ist.
Ich habe nun in einer VM Delphi 10.0 ausprobiert. Auch da werden alle Bytes kopiert.
Beispielcode:
Delphi-Quellcode:
var
test: PByte;
begin
a.someByte := 1;
a.someInteger := 1;
test := @a.someByte;
Inc(test);
test^ := 42;
b := a;
test := @b.someByte;
Inc(test);
ShowMessage(IntToStr(test^));
Egal ob lokale Variablen oder globale Variablen, es kommt immer 42 heraus...