私は 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 ではない) であることが示されています。アクセスする前に常にプロシージャレベルの変数を設定するのが標準だと思いますか?