***すれ立てるまでもない質問はここで 第37刷***
■ このスレッドは過去ログ倉庫に格納されています
0067デフォルトの名無しさん
NGNG「新C言語入門 シニア編 著:林晴比古」(ISBN4-7973-0652-1)によれば、
<1>
memallocで確保したメモリ領域をプログラムの終了時点まで
使用しているときは、わざわざfreeでメモリ解放することはありません。
そのプログラムが終了するとき、使用していたメモリ領域は
自動的に解放されます。
(337ページより引用)
<2>
Cプログラムは、終了するときにもしファイルがオープンされたままに
なっていたら、それを自動的にクローズしてくれます。したがって、
同じファイルポインタを別用途に使わないのであれば、fcloseを
書かなくてもかまいません。
(368ページより引用)
とのことですが、実際に、freeやfcloseを使わずに、
returnやexitによる終了時自動解放をあてにして、
memallocとfopenの関数を使っているちょっとしたプログラムを書きました。
それを現役プログラマの友人に見せたところ、
「freeを使ってメモリ解放していない。メモリリークしてしまう。」
「終了時にファイルが開いたままだ。fcloseを使うべきだ。」
などと指摘されてしまいました。
これら2つをまとめると、
一方(C言語の本)は「終了時に解放されるから良い」、
もう一方(現役プログラマ)は「自分で解放してあげなければならない」、
と、両者の板挟みを喰らって、どちらが正しいのか分からない状態なので、
詳しい方、ご教授願います。
■ このスレッドは過去ログ倉庫に格納されています