静的変数の記憶領域の割り当てについて
C言語入門 (ASCII SOFTWARE SCIENCE Language) という本の以下の部分についての質問です。
自動変数の初期化は、いわゆる「実行時」の現象であり、静的変数の初期化は、「コンパイル時」の現象なのです。 言い換えれば、コンパイラは静的変数のために記憶領域を割り当て、そこに変数の初期値を格納します。したがって、プログラムが実際に実行される時、静的変数の値は既に存在しています。
(略)
静的変数は、それが本当に必要だと思われる場合のみに使用する事を推奨します。
なぜなら静的変数は、それが実際に必要でないときも、常に値をメモリ中に保存しているからです。
これは、プログラムの実行前(a.exeをクリックする前)から
メモリ上に静的変数のために記憶領域は割り当てられているという事でしょうか?
普通に考えると「そんな訳無いだろ」とは思っているのですが、
「プログラムの実行時(a.exeをクリックした時)に1回だけメモリ上に静的変数のための記憶領域を確保する」と解釈すると、
わざわざ「コンパイル時の現象」と言っている意味が分かりません。