配列などで宣言した変数の削除について

解決


Ryune  2007-08-17 19:09:10  No: 66030  IP: 192.*.*.*

メモリーリークに関する質問です。(VC++ver6)

newで宣言した変数はdeleteで削除しましょう、とよく聞きます。

では、newを使わずに宣言した変数(配列など)は、変数の削除処理は意識しなくてもよいのでしょうか?

sub()
{
    char a[256], b;
    (処理)
    return;
}

上記sub()関数が実行され終了した時点で、a[256]やbは解放されている、と考えてよいのでしょうか?、、、特に明示的な削除処理はしていませんが。

どうぞ、よろしくお願いいたします。

編集 削除
επιστημη  URL  2007-08-17 19:40:30  No: 66031  IP: 192.*.*.*

> 上記sub()関数が実行され終了した時点で、a[256]やbは解放されている、と考えてよいのでしょうか?

ヨイ。

sub () {
  int n;
  ...
}

と同じです。

編集 削除
夏みかん  2007-08-18 01:52:32  No: 66032  IP: 192.*.*.*

自動変数は関数から抜けると消滅する。
つまりは別の変数に再利用されるように自動解放?される。
new、delete や malloc、free は必要がなくなったときに解放すべきだ。
でもプログラムが終了すると自動的に解放される。

ちなみに自動変数はスタック上に作られるよ。

編集 削除
Ryune  2007-08-18 10:47:05  No: 66033  IP: 192.*.*.*

皆様、ありがとうございました。

胸のもやもやが、すっかり晴れました。

編集 削除