有没有办法在 Delphi 中获取类实例的实际大小?
我知道 TObject 类的 InstanceSize 方法,但该方法不会递归地为对象成员调用自身。例如,假设我们有两个类:
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 个字节用于类开销,12 个字节来自 myOtherVar2,另外 4 个字节用于 myOtherVar1整数)。由于 myOtherVar2 被解释为指针(4 字节)而不是类引用,因此使用 InstanceSize 将为它们中的每一个产生 12 个字节。
有没有办法获得类的总大小,包括它对其他类实例的引用?