为什么UnitCount在PackageInfoTable和TPackageTypeInfo之间有所不同?

时间:2010-08-05 21:34:12

标签: delphi delphi-2010 internals

如果在System._StartExe中放置断点并检查传入的InitTable,您会注意到InitTable.UnitCount大于InitTable.TypeInfo.UnitCount。不幸的是,这些记录都没有记录得很好。有谁知道这两个数字代表什么,为什么它们不同?我假设InitTable.UnitCount是应用程序中的单元总数。但另一个是什么?

1 个答案:

答案 0 :(得分:3)

我相信 - PackageInfoTable.UnitCount计算存储在UnitInfo数组中的单位,其中每个记录包含包的单位部分的初始化和最终化代码指针。
- PackageInfoTable.TypeInfo.UnitCount以及... UnitNames引用包含TypeInfo(实际类型信息或单位边界标记)中存储的一些TypeTable的单位。

一个单元可以包含一些Init / Finit代码,但没有TypeInfo可以收集和相互作用,因此差异......

仅供参考,请查看MemCheck.pas中的procedure ChangeFinalizationsOrder,了解他们如何破解InitTable(截至D2006)......