Re: Class var in record breaks pointer cast
Martin Frb via fpc-pascal <[email protected]> Thu, 5 Feb 2026 14:42:42 +0100
| Newsgroups | gmane.comp.compilers.free-pascal.general |
|---|---|
| Message-ID | <[email protected]> |
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