オブジェクトの解放について – プログラミング – Home

オブジェクトの解放について
 
通知
すべてクリア

[解決済] オブジェクトの解放について


vivace
 vivace
(@vivace)
ゲスト
結合: 15年前
投稿: 18
Topic starter  

関数内に

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

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

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


引用未解決
トピックタグ
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

HDCなどで定義しただけの変数に対し、
オブジェクト解放しようとしたら、エラーになります。


返信引用
ロマ
 ロマ
(@ロマ)
ゲスト
結合: 18年前
投稿: 170
 

変数を定義しただけなら後始末は不要です。

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

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

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


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

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

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

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

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

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

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


返信引用
vivace
 vivace
(@vivace)
ゲスト
結合: 15年前
投稿: 18
Topic starter  

みなさん回答ありがとうございます

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました