UNIXの本を読んでると、プログラムはexitシステムコールが呼ばれると、
freeregを呼び出し、malloc済みメモリをすべて開放し、共有メモリについても
参照が0になったら解放するようになっていて、仮にメモリリークする
プログラムで会ってもプロセスを殺せば、そのプログラムのリークした分は
すべて解放されるんですよ~~~それと同じ感覚で、windowsでプログラム
やってる友達に聞いたら、プロセスを殺してもnewでリークしたのしっぱなしに
なるっぽいよ~って言ってたんですよ。それって本当なんですか?
てか本当ならあえてそうしてるメリットってあるんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

 Windowsでも、プロセスを殺すとメモリを解放しますと書かれていますが、確かに簡単なプログラムでは解放します。


 しかし、プログラムが複雑になるにつれ、リークが始まります。

 しょせんそんな物と割り切って、自分が使ったメモリは自分で後始末しましょう。

 Windowsの場合は、リークの確率が高く、簡単にリークするプログラムが作れてしまう事に問題があります。
 メリット...まったくなし。プログラムを作る人間のバグです。
    • good
    • 0
この回答へのお礼

なるほどね~~~やっぱあれは単なるバグなんだぁ~~
OSのバグか自分のコードのバグか分からないなんて・・・・
windowsプログラマってよっぽど寛容なんですね~~~
おいらは・・・・・精神的にむりそう(^^;

お礼日時:2001/06/06 11:18

こんにちは、honiyonです。


UNIXですとリークしたメモリもきちっと解放してくれるんですね。
 初めて知りました。

 メモリリークをそのまま残しておくメリットは皆無だと思います。
 
 メモリリークが解放されてない理由は、マイクロソフトの言葉を借りれば「Windowsの仕様」という事になります。

 参考になれば幸いです(..
    • good
    • 0
この回答へのお礼

リークてか・・・解放するのが普通のOSでしょっておもってたのは
おいらだけかな?(^^;
やばいなぁ~~この前レポートで書いたプログラムVCでコンパイルしたけど
あれはwindowsではだめなのか(笑)
どもです

お礼日時:2001/06/06 11:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング