メモリーリークに関する質問です。(VC++ver6)
newで宣言した変数はdeleteで削除しましょう、とよく聞きます。
では、newを使わずに宣言した変数(配列など)は、変数の削除処理は意識しなくてもよいのでしょうか?
sub()
{
char a[256], b;
(処理)
return;
}
上記sub()関数が実行され終了した時点で、a[256]やbは解放されている、と考えてよいのでしょうか?、、、特に明示的な削除処理はしていませんが。
どうぞ、よろしくお願いいたします。
> 上記sub()関数が実行され終了した時点で、a[256]やbは解放されている、と考えてよいのでしょうか?
ヨイ。
sub () {
int n;
...
}
と同じです。
自動変数は関数から抜けると消滅する。
つまりは別の変数に再利用されるように自動解放?される。
new、delete や malloc、free は必要がなくなったときに解放すべきだ。
でもプログラムが終了すると自動的に解放される。
ちなみに自動変数はスタック上に作られるよ。
皆様、ありがとうございました。
胸のもやもやが、すっかり晴れました。
ツイート | ![]() |