Есть ли способ получить фактический размер экземпляра класса в Delphi?
Я знаю о методе InstanceSize класса TObject, но этот метод не рекурсивно вызывает себя для членов объекта. Например, скажем, у нас есть два класса:
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). Использование InstanceSize приведет к получению по 12 байтов для каждого из них, поскольку myOtherVar2 интерпретируется как указатель (4 байта), а не как ссылка на класс.
Есть ли способ получить общий размер класса, включая его ссылку на другие экземпляры класса?