C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。
Q&A
2回答
6390閲覧
総合スコア53
0グッド
1クリップ
投稿2014/11/15 09:46
0
1
DxLibのLoadGraph()関数では読み込んだ画像はDeleteGraph()関数で削除するまでメモリに残留する、と聞きました。
そこで同じ画像を複数回読み込む場合、毎回LoadGraph()関数の前にDeleteGraph()関数をを呼び出さないとメモリは圧迫されてしまうのでしょうか? それとも既に読み込まれているということで、二回目以降は何も起きないのでしょうか?
解答よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答2件
(ソースコードはまだ読みきれていませんので、推測ですが…) 使ったことはありませんが、リファレンスからすると、特に引数の内容を意識しているようには見受けられないので、無条件でメモリ展開する仕様ではないでしょうか? 普通に考えると、ハンドルを引数で渡すか、グローバルで保持していないと、自動解放はできないと思います。 使う方としても、同じファイルであっても加工して使うなどで同じファイルを別に読み込みたい時もあるはずなので、あまり自動化するのは設計として不自然かと思います。
投稿2014/11/17 01:38
総合スコア1356
同じ画像かの判別方法が、とても重い処理になることが予想されるので、 TaMaMhyuさんの回答と同じになりますが、無条件でメモリ確保されたり、 ビデオメモリに転送されたりすると思います。 (おそらく、戻り値のグラフィックハンドルが異なっていると思います)
ちなみに、メモリでもフラグメンテーションは発生するので、DeleteGraphで 削除を繰り返してもメモリ圧迫される可能性があります。 少しでも軽減させるなら、ファイル名とファイル属性(更新日時など)を保持し、 変わっていれば、DeleteGraph→LoadGraphを呼び出すと良いと思います。
投稿2014/11/17 02:34
総合スコア149
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
まだベストアンサーが選ばれていません
アカウントをお持ちの方はログイン
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
【C++/DxLib】LoadGraph()関数について
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。