• ベストアンサー

windowsでのプログラミングについてなんですけど。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.2

 Windowsでも、プロセスを殺すとメモリを解放しますと書かれていますが、確かに簡単なプログラムでは解放します。  しかし、プログラムが複雑になるにつれ、リークが始まります。  しょせんそんな物と割り切って、自分が使ったメモリは自分で後始末しましょう。  Windowsの場合は、リークの確率が高く、簡単にリークするプログラムが作れてしまう事に問題があります。  メリット...まったくなし。プログラムを作る人間のバグです。

akino4
質問者

お礼

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

その他の回答 (1)

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.1

こんにちは、honiyonです。 UNIXですとリークしたメモリもきちっと解放してくれるんですね。  初めて知りました。  メモリリークをそのまま残しておくメリットは皆無だと思います。    メモリリークが解放されてない理由は、マイクロソフトの言葉を借りれば「Windowsの仕様」という事になります。  参考になれば幸いです(..

akino4
質問者

お礼

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

関連するQ&A