Delphi中变量的默认初始值?

时间:2016-02-19 06:29:31

标签: delphi delphi-xe7

使用DelphiXE-7开发一个窗口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。

请相应提出建议。

1 个答案:

答案 0 :(得分:3)

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

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

Variables

本地变量的内存(如iNum)仅在函数调用期间在程序堆栈中动态分配,而本地变量值在未初始化时是随机且不可预测的。这就是初始化是必要步骤的原因。

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

Initializing Strings