Existe-t-il un moyen d'obtenir la taille réelle d'une instance de classe dans Delphi?Taille d'instance de classe récursive dans Delphi
Je sais sur la méthode InstanceSize de la classe TObject mais cette méthode ne s'invoque pas récursive pour les membres de l'objet. Par exemple, disons que nous avons deux classes:
type MyClass1 = class
private
myVar1 : integer;
myVar2 : integer;
end;
type MyClass2 = class
private
myOtherVar1 : integer;
myOtherVar2 : MyClass1;
end;
pour ce segment de code, MyClass1 sera 12 octets longueur (4 octets pour chaque entier plus 4 pour les frais généraux de classe) et MaClasse2 sera 24 octets lengh (4 octets pour le surdébit de classe, 12 octets pour myOtherVar2 et 4 pour l'entier myOtherVar1). L'utilisation de InstanceSize se traduira par 12 octets pour chacun d'entre eux, puisque myOtherVar2 est interprété comme un pointeur (4 octets) au lieu d'une référence de classe.
Y at-il un moyen d'obtenir la taille totale de la classe, y compris sa référence à d'autres instances de classe?
Ou en d'autres termes: quelle profondeur voulez-vous aller? Si ObjectA fait référence à ObjectB, qui fait référence à ObjectC, qui fait référence à ......., alors quelle est la véritable "utilisation de la mémoire" de ObjectA? –