我是Delphi的新手,并且已经在运行一些测试以查看默认情况下将哪些对象变量和堆栈变量初始化为:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
这是我习惯于其他语言的行为,但是我想知道在Delphi中依靠它是否安全?例如,我想知道它是否取决于编译器设置,或者在不同机器上的工作方式是否不同。依靠对象的默认初始化值是正常的,还是在构造函数中显式设置所有实例变量?
至于堆栈(过程级别)变量,我的测试表明,统一化的 bool(boolean) 值是真实的,统一化的整数是2129993264,未初始化的对象只是无效的指针(即不是nil)。我猜测规范是总是在访问它们之前设置过程级变量?
最佳答案
是的,这是记录的行为:
我记得Barry Kelly在某处写了一个“引用计数”的定义,但是再也找不到了,因此在此期间应该这样做:
笔记:
record
本身不足以成为引用计数的关于delphi - 默认情况下,delphi变量是否使用值初始化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/132725/