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

解決


Ryune  2007-08-18 04:09:10  No: 66030

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

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

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

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

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

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


επιστημη  URL  2007-08-18 04:40:30  No: 66031

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

ヨイ。

sub () {
  int n;
  ...
}

と同じです。


夏みかん  2007-08-18 10:52:32  No: 66032

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

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


Ryune  2007-08-18 19:47:05  No: 66033

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加