- ベストアンサー
windowsでのプログラミングについてなんですけど。
UNIXの本を読んでると、プログラムはexitシステムコールが呼ばれると、 freeregを呼び出し、malloc済みメモリをすべて開放し、共有メモリについても 参照が0になったら解放するようになっていて、仮にメモリリークする プログラムで会ってもプロセスを殺せば、そのプログラムのリークした分は すべて解放されるんですよ~~~それと同じ感覚で、windowsでプログラム やってる友達に聞いたら、プロセスを殺してもnewでリークしたのしっぱなしに なるっぽいよ~って言ってたんですよ。それって本当なんですか? てか本当ならあえてそうしてるメリットってあるんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Windowsでも、プロセスを殺すとメモリを解放しますと書かれていますが、確かに簡単なプログラムでは解放します。 しかし、プログラムが複雑になるにつれ、リークが始まります。 しょせんそんな物と割り切って、自分が使ったメモリは自分で後始末しましょう。 Windowsの場合は、リークの確率が高く、簡単にリークするプログラムが作れてしまう事に問題があります。 メリット...まったくなし。プログラムを作る人間のバグです。
その他の回答 (1)
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 UNIXですとリークしたメモリもきちっと解放してくれるんですね。 初めて知りました。 メモリリークをそのまま残しておくメリットは皆無だと思います。 メモリリークが解放されてない理由は、マイクロソフトの言葉を借りれば「Windowsの仕様」という事になります。 参考になれば幸いです(..
お礼
リークてか・・・解放するのが普通のOSでしょっておもってたのは おいらだけかな?(^^; やばいなぁ~~この前レポートで書いたプログラムVCでコンパイルしたけど あれはwindowsではだめなのか(笑) どもです
お礼
なるほどね~~~やっぱあれは単なるバグなんだぁ~~ OSのバグか自分のコードのバグか分からないなんて・・・・ windowsプログラマってよっぽど寛容なんですね~~~ おいらは・・・・・精神的にむりそう(^^;