オブジェクトの解放について

[戻る]
vivace 2010/05/09(日) 17:26:06
関数内に

hdcやBITMAP などの変数を定義すると
解放を必ずしなければなりませんか??

関数抜けると自動的に解放してくれますか??

本当に素人質問ですいません

ryo 2010/05/09(日) 20:07:52
HDCなどで定義しただけの変数に対し、
オブジェクト解放しようとしたら、エラーになります。

ロマ 2010/05/09(日) 21:18:56
変数を定義しただけなら後始末は不要です。

APIのGetDC()でHDCを取得したら、ReleaseDC()で解放する必要があります。
CreateDC()の場合はDeleteDC()です。

では、解放や削除をしない場合はどうなるでしょうか。
OSに依存しますが、なかなか面白いです。

BITMAP構造体については良く判りません。
どのAPIで使用しますか。

仲澤@失業者 2010/05/10(月) 11:17:10
>関数抜けると自動的に解放してくれますか??

まず、
1.HDCもBITMAPも構造体です。

次に
2.関数内で定義された自動変数は(一般に)スタックにその実体が用意されます。

最後に
3.ある関数内で使用(用意)されたスタックは、関数スコープから抜けると
  自動的に解放されます。

従って、これらの自動変数は自動的に解放されます。

>解放を必ずしなければなりませんか??
定義した自動変数自体を解放する方法はありません。つまり、できません。
CreateDC()やBeginPaint()等を使用して自動変数に意味のあるデータを
取得した場合は、そのマニュアルのに記載してある通りの後始末が必要になります。

vivace 2010/05/10(月) 16:48:01
[[解決]]
みなさん回答ありがとうございます

非常に理解しやすかったです

古いスレッドには追加発言できません。