在Delphi中,如果我有一个变量myObject : MyClass,并且MyClass具有一个固定长度数组的属性,其中包含300个整数,那么它的内存何时会被分配?
myObject := MyClass.Create;(构造函数)?如果您确实意味着该对象具有属性,则根本不会为其分配空间。属性是某些其他访问模式(字段或函数)的通用接口。
如果该属性由对象的字段支持,那么,正如 Mason 所解释的那样,该字段作为对象本身的一部分而存在;数组的长度直接影响对象的总大小(由方法给出TObject.InstanceSize)。场有记忆;该物业没有。
如果该属性由函数支持,则该函数的返回值通常会在调用者的堆栈上分配并作为“var”参数传入。该函数填充它并返回给调用者。同样,该属性本身没有为其分配内存。
您可以在一个只有四个字节长(这是对象的最小大小)的对象上拥有一百个属性。
但是,如果您实际上指的是一个字段,那么它会在调用期间作为对象的一部分进行分配TObject.NewInstance。该方法作为外部构造函数序言的一部分被调用(而不是对继承构造函数的任何调用)。
| 归档时间: |
|
| 查看次数: |
1755 次 |
| 最近记录: |