Delphi 中变量的默认初始值?

Default initial value of a variable in Delphi?

使用 DelphiXE-7 开发 window-32 位应用程序。 我有以下一段代码-

Procedure TMainForm.Button1Click(Sender: TObject);
Var
  iNum: Integer;
  bExit: Boolean;
Begin
  ShowMessage(IntToStr(iNum));
  repeat
    Inc(iNum);
    bExit := True;
  until Exit;
End;

我知道在使用前不初始化iNum可能会出现这个问题,不过调试的时候应该也会出现。

但是当我调试或 运行 编译的 exe MessageBox 显示为 “0” 这似乎是正确的,但是当我们安装构建和 运行 相同的过程然后 MessageBox 显示一些垃圾值而不是零。类似于 “1632824”.

编译生成和生成生成的唯一区别是后面生成的不是生成dcu。

请指教

全局变量在应用程序数据段中,程序启动时用零初始化。

Class 字段在创建对象时用零初始化(它们可能稍后在构造函数、Loaded() 等中填充)。

Variables

像您的 iNum 这样的局部变量的内存是在函数调用期间在程序堆栈中动态分配的,并且局部变量值在未初始化时是随机的且不可预测的。这就是为什么初始化是必要的步骤。

此规则的例外是编译器管理的类型 - 字符串、接口、变体、动态数组等 - 它们用空值初始化。

Initializing Strings