On 05/02/2026 14:34, Hairy Pixels via fpc-pascal wrote:
Is this a bug? Adding the class var field changes prints 0 and without it prints 100 as expected. The class var is just a static field that isn't actually part of the record so how could it affect the memory layout?
A class var is (as the name suggest "not instance") not part of the instance. (instead a scoped global var).
So a pointer to the instance can not be to the memory that holds the class var data.
type TMyRec = record class var z: UInt32; x, y: UInt32; end; var r: TMyRec; p: pointer; begin r.x := 100; p := @r; writeln(PUInt32(p)^); end.
_______________________________________________ fpc-pascal maillist - [email protected] https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
