私は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でそれを信頼しても安全かどうか疑問に思っていますか?たとえば、コンパイラの設定に依存しているのか、それともマシンによって動作が異なるのかと思います。オブジェクトのデフォルトの初期化値に依存するのは普通ですか、それともコンストラクタですべてのインスタンス変数を明示的に設定していますか?
スタック(プロシージャレベル)変数については、私のテストでは、単一化されたブール値がtrue、単一化された整数が2129993264、未初期化オブジェクトが無効なポインター(つまりnilではない)であることを示しています。それらにアクセスする前に、常にプロシージャレベルの変数を設定するのが標準であると思いますか?