当前位置:  开发笔记 > 人工智能 > 正文

Delphi中的递归类实例大小

如何解决《Delphi中的递归类实例大小》经验,为你挑选了1个好方法。

有没有办法在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个字节lengh(类开销为4个字节,myOtherVar2为12个字节,myOtherVar1为4个字节)整数).由于myOtherVar2被解释为指针(4个字节)而不是类引用,因此使用InstanceSize将为每个字节生成12个字节.

有没有办法获得类的总大小,包括它对其他类实例的引用?



1> Pete Kirkham..:

构造一个MyClass1对象和一个百万MyClass2,使每个MyClass2指向相同的MyClass1.

每个MyClass2占用多少内存?12.000012字节?

循环列表需要多少内存?无限,因为你可以永远追逐指针?

在具有指针的语言中,一般的递归大小的算法是没有用的.您需要编写自己的算法,该算法包含有关特定于您如何使用对象的聚合/组合,共享和递归引用的知识.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有