[fpc-pascal] Class var in record breaks pointer cast
Martin Frb
lazarus at mfriebe.de
Thu Feb 5 14:42:42 CET 2026
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.
>
More information about the fpc-pascal
mailing list