通知
すべてクリア
Topic starter
2010年5月9日 5:26 PM
関数内に
hdcやBITMAP などの変数を定義すると
解放を必ずしなければなりませんか??
関数抜けると自動的に解放してくれますか??
本当に素人質問ですいません
2010年5月9日 8:07 PM
HDCなどで定義しただけの変数に対し、
オブジェクト解放しようとしたら、エラーになります。
2010年5月9日 9:18 PM
変数を定義しただけなら後始末は不要です。
APIのGetDC()でHDCを取得したら、ReleaseDC()で解放する必要があります。
CreateDC()の場合はDeleteDC()です。
では、解放や削除をしない場合はどうなるでしょうか。
OSに依存しますが、なかなか面白いです。
BITMAP構造体については良く判りません。
どのAPIで使用しますか。
2010年5月10日 11:17 AM
>関数抜けると自動的に解放してくれますか??
まず、
1.HDCもBITMAPも構造体です。
次に
2.関数内で定義された自動変数は(一般に)スタックにその実体が用意されます。
最後に
3.ある関数内で使用(用意)されたスタックは、関数スコープから抜けると
自動的に解放されます。
従って、これらの自動変数は自動的に解放されます。
>解放を必ずしなければなりませんか??
定義した自動変数自体を解放する方法はありません。つまり、できません。
CreateDC()やBeginPaint()等を使用して自動変数に意味のあるデータを
取得した場合は、そのマニュアルのに記載してある通りの後始末が必要になります。
Topic starter
2010年5月10日 4:48 PM
みなさん回答ありがとうございます
非常に理解しやすかったです