由TObject原码对类的内存分配 .docVIP

  • 2
  • 0
  • 约6.97千字
  • 约 9页
  • 2017-02-11 发布于北京
  • 举报
由TObject原码对类的内存分配 一、分析TObject原码 1.1 1.1 看Delphi之祖TObject究竟干了些什么? 1.1.1 1.1.1 类的实例化 ??? ?class function InitInstance(Instance: Pointer): TObject; ?class function NewInstance: TObject; virtual; ??? 这两个方法实现了对类的实例化,其中由 function _ClassCreate(AClass: TClass; Alloc: Boolean): TObject; asm { - EAX = pointer to VMT } { - EAX = pointer to instance } PUSH EDX PUSH ECX PUSH EBX TEST DL,DL JL @@noAlloc CALL DWORD PTR [EAX] + VMTOFFSET TObject.NewInstance? ...... ??? 当然类实例的释放,就由下面CleanupInstance和FreeInstance两个函数完成了,同理他们的实现原理大家也可以猜到了,这里就不多说了。 1.1.2 1.1.2 对象的初始化 ??? 由于这部分大家都明白,在 1.1.3 1.1.3 vmt表、实例内存段和对象域关系

文档评论(0)

1亿VIP精品文档

相关文档