如果在System._StartExe
中放置断点并检查传入的InitTable,您会注意到InitTable.UnitCount
大于InitTable.TypeInfo.UnitCount
。不幸的是,这些记录都没有记录得很好。有谁知道这两个数字代表什么,为什么它们不同?我假设InitTable.UnitCount是应用程序中的单元总数。但另一个是什么?
答案 0 :(得分:3)
我相信
- PackageInfoTable.UnitCount
计算存储在UnitInfo
数组中的单位,其中每个记录包含包的单位部分的初始化和最终化代码指针。
- PackageInfoTable.TypeInfo.UnitCount
以及... UnitNames
引用包含TypeInfo
(实际类型信息或单位边界标记)中存储的一些TypeTable
的单位。
一个单元可以包含一些Init / Finit代码,但没有TypeInfo可以收集和相互作用,因此差异......
仅供参考,请查看MemCheck.pas中的procedure ChangeFinalizationsOrder
,了解他们如何破解InitTable(截至D2006)......