Jor*_*oba 3 memory delphi size
有没有办法在Delphi中获取类实例的实际大小?
我知道TObject类的InstanceSize方法,但该方法不会以递归方式为对象成员调用自身.例如,假设我们有两个类:
type MyClass1 = class
private
myVar1 : integer;
myVar2 : integer;
end;
type MyClass2 = class
private
myOtherVar1 : integer;
myOtherVar2 : MyClass1;
end;
Run Code Online (Sandbox Code Playgroud)
对于这段代码,MyClass1将是12个字节长度(每个整数4个字节加上4个类的开销)和MyClass2将是24个字节lengh(类开销为4个字节,myOtherVar2为12个字节,myOtherVar1为4个字节)整数).由于myOtherVar2被解释为指针(4个字节)而不是类引用,因此使用InstanceSize将为每个字节生成12个字节.
有没有办法获得类的总大小,包括它对其他类实例的引用?
Pet*_*ham 16
构造一个MyClass1对象和一个百万MyClass2,使每个MyClass2指向相同的MyClass1.
每个MyClass2占用多少内存?12.000012字节?
循环列表需要多少内存?无限,因为你可以永远追逐指针?
在具有指针的语言中,一般的递归大小的算法是没有用的.您需要编写自己的算法,该算法包含有关特定于您如何使用对象的聚合/组合,共享和递归引用的知识.
| 归档时间: |
|
| 查看次数: |
2648 次 |
| 最近记录: |