Code:
CONTAINING_RECORD(Addr, MyType, Var3) = Addr - sizeof(Typ2) - sizeof(Typ1)
Dank der Speicherausrichtung, kann das schnell mal schief laufen.
Delphi-Quellcode:
MyType = record
Var1: Byte;
Var2: LongInt;
end;
Laut deiner Berechnung/Zählung würde Var2 einen Offset von 1 haben, da SizeOf(Byte) = 1, aber standardmäig wird man einen Offset von 4 vorfinden.