21、Object Pascal 编程:数据格式、程序控制与退出处理

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值