我是 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 中依赖它是否安全?例如,我想知道它是否可能取决于编译器设置,或者可能在不同的机器上以不同的方式工作。依赖对象的默认初始化值是否正常,或者您是否在构造函数中显式设置所有实例变量?
至于堆栈(过程级)变量,我的测试表明未初始化的布尔值是真的,未初始化的整数是 2129993264,未初始化的对象只是无效的指针(即不是 nil)。我猜规范是在访问它们之前总是设置过程级变量?