プログラムで確保されるメモリについて
プログラムで確保されるメモリ領域には、スタック領域とヒープ領域があると思います。
スタック領域は関数内などで定義される変数によって確保される領域で、
コンパイルをした時点でメモリの大きさが決まり、確保や解放もOS任せになります。
それに対してヒープ領域は動的確保(mallocとかnew)で確保される領域のことで、
プログラマが解放しない限りそこに残り続けます。
ここで質問なのですが、(上の解釈が間違っている時はご指摘ください)
例えば以下のコード(C++)があったとします。
void Hoge()
{
int hoge1 = 0;
for( int i = 0; i < 10; ++i ){
hoge1+=i;
}
}
ここで変数hoge1
、for文内の変数i
はどちらもスタック領域に確保されると思います。
また、変数i
のスコープはfor文内のみで、ほかからはアクセス出来ません。
質問というのは、for文を抜けた時点で、変数i
はメモリ上には残るのでしょうか?
何が知りたいかというと、変数のスコープが小さければ小さいほど、
メモリの節約になるのかということです。
よろしくお願いします。