static
ストレージはコンパイル時に決定されます。ただし、関数に遅延初期化がたくさんあるシナリオを考えてみましょう。
void foo ()
{
static int a[1000];
}
ここではコーディングの実践についてではなく、技術的な側面について説明します。のような他の多くの関数 foo()
が実行されると、それらの多くのstatic
変数がデータセグメントに導入されます。
コンパイラは、データセグメントにスペースを割り当てるときに、アカウントでも遅延初期化を行いますか。「いいえ」の場合、コードの実行中に実行時にセグメンテーション違反が発生しますか?(メソッド内に多くのstatic
データがある場合に発生する可能性が高くなりtemplate
ます)。