第一步是要知道结构体大小的计算方式:
结构体大小等于最后一个成员的偏移量加上最后一个成员的大小,
偏移量指的是结构体变量中成员的地址 – 结构体变量地址的差, 第一个成员的偏移量为0
下面代码
TRecord2 = record
a: Integer;
b: Integer;
c: Integer;
end;
{$A8+}
TRecord1 = record
a1: Byte;
a2: Integer;
a3: Int64;
a4: Byte;
a5: Word;
case Integer of
0: (e1: TRecord2);
1: (e2: Int64);
end;
直接用数据说话吧:
下面是每个成品的偏移量
a1:0, a2:4, a3:8, a4:16, a5:18, e1:24, e2:24, size:40
其实可以画一个格子<下面每个格子代表对齐的字节数>
| a1|a2 | a3 | a4|a5 | e1|e2 | e1 |
