ループ内で変数を宣言するとオーバーヘッドが発生しますか? (C++) [重複] 質問する

ループ内で変数を宣言するとオーバーヘッドが発生しますか? (C++) [重複] 質問する

次のようなことをすると、速度や効率が低下するのではないかと思います。

int i = 0;
while(i < 100)
{
    int var = 4;
    i++;
}

これはint var100 回宣言します。あるように思えますが、よくわかりません。代わりに次のようにする方が実用的/高速でしょうか。

int i = 0;
int var;
while(i < 100)
{
    var = 4;
    i++;
}

それとも速度と効率の点では同じでしょうか?

ベストアンサー1

ローカル変数のスタック スペースは通常、関数スコープ内に割り当てられます。そのため、ループ内ではスタック ポインターの調整は行われず、 に 4 が割り当てられるだけですvar。したがって、これら 2 つのスニペットのオーバーヘッドは同じです。

おすすめ記事