关于 TObject 基础问题,
TObject的create和destroy方法是怎么为对象分配内存与释放内存的呢?调用了那个API分配呢?
[解决办法]
这个是DELPHI的实现机制,主要是初始化RTTI和VMT
[解决办法]
你研究一下这个方法:
class function TObject.InitInstance(Instance: Pointer): TObject;{$IFDEF PUREPASCAL}var IntfTable: PInterfaceTable; ClassPtr: TClass; I: Integer;begin FillChar(Instance^, InstanceSize, 0); PInteger(Instance)^ := Integer(Self); ClassPtr := Self; while ClassPtr <> nil do begin IntfTable := ClassPtr.GetInterfaceTable; if IntfTable <> nil then for I := 0 to IntfTable.EntryCount-1 do with IntfTable.Entries[I] do begin if VTable <> nil then PInteger(@PChar(Instance)[IOffset])^ := Integer(VTable); end; ClassPtr := ClassPtr.ClassParent; end; Result := Instance;end;
[解决办法]
推荐楼主看看李维的VCL INSIDE,里面有详细的介绍。
[解决办法]