• ベストアンサー

MFCのメモリ開放が必要なメソッド

現在、MFCを使ってドローツールを作成しています。 今まで、DCの取得にGetDC()を多用していたのですが、 今日初めて、GetDC()とReleaseDC()は必ずセットで使う事を知りました。 恥ずかしい話ですが、まだまだMFCには詳しくありません。 このように、WindowsのC言語開発でメモリ開放がセットになっている関数で 初心者がよく失敗しがちなものが他にもありましたら教えて下さい。 どうぞ宜しくお願い致します。

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

  • ベストアンサー
回答No.1

>このように、WindowsのC言語開発でメモリ開放がセットになっている関数で >初心者がよく失敗しがちなものが他にもありましたら教えて下さい。 ほとんどすべてがそうです。 ある程度は「プログラムが終了する際に自動的に開放」されますが、プログラムが終了してもシステムに残る(リークする)のが普通です。 特に「ハンドルを返すもの」は、ハンドルのクローズが必須です。 ハンドルは「ハンドルをオープンしたプロセスが、別プロセスにハンドルを渡して、自分は居なくなる」って言う使い方をする事があるので、オープンしたプログラムが終了してもオープンされたまま残ります。 ですので「オープンしたハンドルは、誰かが必ずクローズする」が鉄則。 あと、良くミスるのが、FindFirstFileをやって、FindNextFileして、最後にFindCloseFileを忘れる、っていうミス。 FindFile系は「検索時に内部リソースを使う」ので、FindCloseFileをしないと、リソースがリークします。

ken2r
質問者

お礼

これからは、教えていただいたようにクローズ処理を 常に気にしながらプログラムしたいと思います。 ご返信有難うございました。

すると、全ての回答が全文表示されます。

関連するQ&A