、スコット静的オブジェクトを一般的に初期化する必要がありますか?プログラミング言語の語用論から
ことによって、オブジェクトの寿命は、一般的に、オブジェクトの領域を管理するために使用される三つの主要 ストレージ割り当てメカニズムの1つに対応する:
静的オブジェクトは絶対アドレスが与えられていますこれはプログラムの実行中も保持されます。
スタックオブジェクトは、通常、サブルーチン呼び出しと返り値とともに、最後尾、最初の順序で割り当ておよび割り当て解除されます。
- ヒープオブジェクトは、任意の時間に割り当てられ、割り当て解除される可能性があります。より一般的な(そして高価な)ストレージ管理アルゴリズムが必要です。 例えば
、Cにおいて、静的オブジェクトは、定数式(コンパイル時に評価できる式)で初期化されなければなりません。
私はそれが他の言語の場合であるかどうか、他のどの言語でも静的オブジェクトがあるかどうかはわかりません。
通常、静的オブジェクトを初期化する必要がありますか?初期化時にコンパイル時に評価できる式で初期化する必要がありますか?
初期設定では、初心者ではなく、明示的または暗黙的(つまり、言語実装によって自動的に行われます)を意味します。 私の質問に言い換えると、一般に、静的オブジェクトはプログラムやコンパイラによって初期化されないままになることがありますか?
ありがとうございました。
短い答えは「いいえ」です。しかし、おそらく、プログラムの後半で未初期化の問題を回避する必要があります。 – Serge
まったく真実ではなく、 'static'変数はデフォルトで0(あるいは同等)に初期化され、'非static'変数は実際に初期化されなければなりません。そうでなければメモリスタックのガーベッジ値になります。 –