C++相談室2

このエントリーをはてなブックマークに追加
211初心者です
超初心者の質問です。
Cでmallocとかでメモリを確保した後、きちんとfreeしてあげないとだめなんですか?
すごくめんどくさくて別に問題ないのならやりたくないんだけど。
ちなみにOSはLinuxです。
教えてください。
>>211
C++ じゃなくて C の話題のような気がするが…ともかく。

free() すると、free() したメモリが malloc(), realloc() で再利用可能になる。
もし何度も malloc() を行うプログラムなら free() しておくと使用メモリ量を
抑えられる。

サーバプロセスのように 24 時間実行されたり、エディタのようにいつまで実行
すればいいのか分からんアプリケーションで何度も malloc() する場合には
free() 必須。さもないとメモリを食いつぶしてしまう。

短期間だけ実行してすぐに終了してしまうプロセスや、malloc() で確保する
メモリ量が限られている場合には free() せずに終了して構わない。free()
していないメモリ領域も含めて、プロセスが使っていたメモリは OS がまとめ
て回収するから。

関連スレッド
始まった!malloc and free - fj.comp.lang.c
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=981051921

あと free() するのが面倒だと感じるなら、ガベージコレクタを使っても良いよ。
プログラム中から参照されていないメモリ領域を勝手に free() してくれる。

BoehmGC
http://reality.sgi.com/boehm/gc.html