Object Pascal 编程:数据格式、程序控制与退出处理
1. 内部数据格式
1.1 程序类型
- 过程指针:存储为指向过程或函数入口点的 32 位指针。
- 方法指针:存储为指向方法入口点的 32 位指针,后跟指向对象的 32 位指针。
1.2 类类型
类类型的值存储为指向类实例(即对象)的 32 位指针。对象的内部数据格式类似于记录,其字段按声明顺序存储为连续变量序列,且字段总是对齐的,对应于未打包的记录类型。从祖先类继承的字段存储在派生类中定义的新字段之前。
每个对象的前 4 字节字段是指向类的虚拟方法表(VMT)的指针。每个类只有一个 VMT,不同的类类型从不共享 VMT。VMT 由编译器自动构建,程序不会直接操作它。
VMT 的布局如下表所示:
| Offset | Type | Description |
| ---- | ---- | ---- |
| –76 | Pointer | 指向虚拟方法表(或 nil) |
| –72 | Pointer | 指向接口表(或 nil) |
| –68 | Pointer | 指向自动化信息表(或 nil) |
| –64 | Pointer | 指向实例初始化表(或 nil) |
| –60 | Pointer | 指向类型信息表(或 nil) |
| –56 | Pointer | 指向字段定义表(或 nil) |
| –52 | Pointer | 指向方法定义表(或 nil) |
| –48 | Poi