Delphi中全局变量和类变量的使用
我有一个关于全局变量和类变量使用Delphi中全局变量和类变量的使用,delphi,Delphi,我有一个关于全局变量和类变量使用class var的问题 使用类变量在类中声明变量: unit Unit1; interface type TClass = class public class var ObjectList: TObjectList end; implementation end. 声明全局变量: unit Unit1; interface var ObjectList: TObjectList implementation end. 编
class var
的问题
使用类变量在类中声明变量:
unit Unit1;
interface
type
TClass = class
public
class var ObjectList: TObjectList
end;
implementation
end.
声明全局变量:
unit Unit1;
interface
var
ObjectList: TObjectList
implementation
end.
编译器如何为这两个变量分配内存?这些变量的实现方式完全相同。类var
作为全局变量实现。也就是说,模块中只有一个静态分配的变量实例
唯一的区别是类var
在不同的范围内,您可以使用可见性保护说明符,如private
来限制对变量的访问。值得一提的是,在这两种情况下ObjectList
指针将驻留在数据段中。并完全回答他的问题(编译器如何为这两个变量分配内存?
),这两个变量的内存分配将在静态数据段中。对于引用类型,只有指针分配在数据段中,对象空间在运行时以通常的方式(在堆上)动态分配。我不想在这里谈论特定于平台的实现细节。模块中只有一个变量实例。这是所需的心理记忆模型。这很公平,但他的具体问题是如何为这些变量分配内存。我认为完整的答案至少应该解决这个问题,即使它是提供了一个开放的答案(即:“这取决于平台”)。@J…实际上是我问了这部分问题。看看编辑。我想他真的只是想知道这些选项之间的区别。在我看来,重要的不是数据段,而是有一个实例。