C言語関係掲示板

過去ログ

No735 freeしたメモリ領域の参照

[戻る] [ホームページ]
No.9029

freeしたメモリ領域の参照
投稿者---terapad(2003/08/24 00:50:50)


言葉についての質問なのですが、
freeし忘れてメモリが足りなくなることを「メモリリーク」と言いますが、
freeしたメモリ領域の参照のことを言う単語はあるのでしょうか?
また、freeしたメモリ領域を参照するとどのような動作をするのでしょうか?


No.9031

Re:freeしたメモリ領域の参照
投稿者---YuO(2003/08/24 02:36:43)


>freeし忘れてメモリが足りなくなることを「メモリリーク」と言いますが、
>freeしたメモリ領域の参照のことを言う単語はあるのでしょうか?

特にないと思いますが,解放されたオブジェクトを指すポインタのことを,
dangling pointerと呼びます。


>また、freeしたメモリ領域を参照するとどのような動作をするのでしょうか?

未定義です。
何事もないようにプログラムは進行するかもしれませんし,
アクセス違反でプログラムが強制終了させられるかもしれません。


No.9034

Re:freeしたメモリ領域の参照
投稿者---terapad(2003/08/24 11:50:14)


ご解答ありがとうございます。
未定義というのはどうなるかわからないということなんですね。

もう1つ質問なのですが、
一度freeした領域を再度freeしたらどうなるのでしょうか?
これも未定義でしょうか。


No.9035

Re:freeしたメモリ領域の参照
投稿者---たか(2003/08/24 13:59:47)


>もう1つ質問なのですが、
>一度freeした領域を再度freeしたらどうなるのでしょうか?
>これも未定義でしょうか。

もちろん未定義です。ちなみにC++の場合はポインタ変数に0が入って
いれば、deleteを適用しても無視されます。C++ではdeleteしたらポイ
ンタ変数に0を代入しておく習慣はそこから来ています。

No.9036

Re:freeしたメモリ領域の参照
投稿者---terapad(2003/08/25 00:49:12)


ありがとうございました。
勉強になりました。