Delphi でクラス インスタンスの実際のサイズを取得する方法はありますか?
TObject クラスの InstanceSize メソッドについては知っていますが、そのメソッドはオブジェクト メンバーに対して自身を再帰的に呼び出しません。たとえば、次の 2 つのクラスがあるとします。
type MyClass1 = class
private
myVar1 : integer;
myVar2 : integer;
end;
type MyClass2 = class
private
myOtherVar1 : integer;
myOtherVar2 : MyClass1;
end;
このコード セグメントでは、MyClass1 の長さは 12 バイト (整数ごとに 4 バイトとクラス オーバーヘッドの 4 バイト) になり、MyClass2 の長さは 24 バイト (クラス オーバーヘッドに 4 バイト、myOtherVar2 から 12 バイト、myOtherVar1 にさらに 4 バイト) になります。整数)。myOtherVar2 はクラス参照ではなくポインター (4 バイト) として解釈されるため、InstanceSize を使用すると、それぞれが 12 バイトになります。
他のクラス インスタンスへの参照を含むクラスの合計サイズを取得する方法はありますか?