有沒有辦法在Delphi中獲取類實例的實際大小?德爾福的遞歸類實例大小
我知道TObject類的InstanceSize方法,但該方法不會遞歸地爲對象成員調用自身。例如,讓我們說,我們有兩個類:
type MyClass1 = class
private
myVar1 : integer;
myVar2 : integer;
end;
type MyClass2 = class
private
myOtherVar1 : integer;
myOtherVar2 : MyClass1;
end;
此段的代碼,MyClass1的將是(對於類的開銷的4字節的各整數加上4)12字節長度和MyClass2將是24個字節lengh( 4個字節用於類開銷,12個字節來自myOtherVar2,另外4個用於myOtherVar1整數)。因爲myOtherVar2被解釋爲一個指針(4字節)而不是類別引用,所以使用InstanceSize將導致它們中的每一個都有12個字節。
有沒有辦法獲得類的總大小,包括對其他類實例的引用?
或換句話說:你想走多深?如果ObjectA引用ObjectB,它引用ObjectC,它引用.......,那麼ObjectA的真正「內存使用」是什麼? – 2009-01-28 02:03:47