トップページ > 記事閲覧
LoadGraph DeleteGraphについて気になったこと
名前:t.oda 日時: 2021/05/01 20:38

お世話になっております。dxlibを使わせて戴いております。 LoadGraph DeleteGraphについて気になったことがありますので質問させていただきます。 以下のような感じの関数を作ってしまって、これは何回も呼ばれます。 ----------------------------------------------- void showGamen(){//何らかの画面を表示 int img; img = LoadGraph("XXXX.bmp"); if(なんらかの条件がfalse){ return; } while(なんらかの条件がtrueの間画像を表示){ DrawGraph(0, 0, img, true); } DeleteGraph( img ); } ------------------------------------- LoadGraph を間違ってifの前にしてしまって、ifがfalseだったら、ロードしたのに解放(DeleteGraph)していないことになっています。 この関数が呼ばれて解放前にifがfalseでreturnしている場合、 その都度メモリをどんどん確保していってメモリ不足になるのか、 それとも同じ領域を毎回確保するので、メモリ不足になることはないののどちらになるでしょうか? そもそも imgがこの関数の中だけのローカルの関数なので、この関数から出た時点で解放されるので問題なしだったりしないでしょうか? 以上よろしくお願いいたします。
メンテ

Page: 1 |

Re: LoadGraph DeleteGraphについて気になったこと ( No.1 )
名前:管理人 日時:2021/05/01 22:32

> この関数が呼ばれて解放前にifがfalseでreturnしている場合、 > その都度メモリをどんどん確保していってメモリ不足になるのか、 > それとも同じ領域を毎回確保するので、メモリ不足になることはないののどちらになるでしょうか? こちらを実行し続けた場合は前者の方( その都度メモリをどんどん確保していってメモリ不足になる )となりますので、 途中で return する場合も DeleteGraph( img ); を実行する必要があります > そもそも imgがこの関数の中だけのローカルの関数なので、この関数から出た時点で解放されるので問題なしだったりしないでしょうか? いえ、int のローカル変数が無効になるだけで、LoadGraph で読み込まれた画像データはメモリに残り続けます
メンテ
Re: LoadGraph DeleteGraphについて気になったこと ( No.2 )
名前:t.oda 日時:2021/05/01 22:48

管理人様 ご回答ありがとうございます。 やはり修正しないとまずいのですね。 承知いたしました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存