トップページ > 記事閲覧
グラフィックハンドル復元関数使用後に使用メモリが増加する
名前:すっぴー 日時: 2014/01/18 01:21

画像ロードの際に、将来的に暗号化を施すことを見越して、 ひっとーさんの質問 (ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=3164) を参考にSetUseGraphBaseDataBackupとSetRestoreGraphCallbackを用いた復帰関数を組んでいたのですが、 全画面起動→Alt+Tabで戻る→タスクバーでメモリ確認 を繰り返すたび、使用メモリが1MBほど増加しています。 メモリリークの検出にも引っかからなかったため、DXライブラリ側の問題を懸念しています。 ロード関数の中身を空にしてもやはり使用メモリの増加が見られました。 コードとしては、 class GameRoutineのメンバとしてint Load()があり、 static void Reload(void* Data)内でData*をGameRoutine*にキャストして->Load()としています。 static void Reload(void* Data){ GameMainRoutine* ptr = static_cast<GameMainRoutine*>(Data); InitGraph(); ptr->BufferScr.ResetupBufferScreen(); ptr->Load(); } Resetup~~~は、アス比維持のために用意したクラスで、内部でDeleteGraphとMakeScreenを呼んでいます。 DXライブラリ側の設定は同クラスに用意したメンバ関数の中で Dxlib_Init(); SetUseGraphBaseDataBackup(false); SetGraphicsDeviceRestoreCallbackFunction(Reload,this); としてあります。 説明が煩雑で申し訳ない限りですが、原因をご教授いただけないでしょうか・・・?
メンテ

Page: 1 |

Re: グラフィックハンドル復元関数使用後に使用メモリが増加する ( No.1 )
名前:管理人 日時:2014/01/19 20:08

「全画面起動→Alt+Tabで戻る」を何度も実行すると、際限なく使用メモリが増えていきますでしょうか? 私も試してみましたが、数MB増えた後は、それ以上増えることはありませんでした
メンテ
Re: グラフィックハンドル復元関数使用後に使用メモリが増加する ( No.2 )
名前:すっぴー 日時:2014/01/21 22:23

起動時のメモリ使用が26MB、その後36MBまで増加したところで増加が止まりました。 この現象はDXライブラリもしくはDirectXの仕様、ということなのでしょうか…? 使用しているグラフィックは変わらないので、素人考えではメモリ使用量も変わらないのではと思っているのですが…
メンテ
Re: グラフィックハンドル復元関数使用後に使用メモリが増加する ( No.3 )
名前:管理人 日時:2014/01/24 04:09

> この現象はDXライブラリもしくはDirectXの仕様、ということなのでしょうか…? 詳しいことは私も分かりませんが、少なくともDXライブラリの仕様ではありません 考えられる原因としては、DXライブラリが使用しているメモリ確保APIが OSから確保したメモリをDXライブラリが解放指示をした直後には解放していない可能性が考えられます ( OSからのメモリの確保は時間が掛かるので、一度確保したメモリはAPI利用者から解放指示がされても  条件が揃うまでは解放しない( OSに返さない )等・・・ )
メンテ
Re: グラフィックハンドル復元関数使用後に使用メモリが増加する ( No.4 )
名前:すっぴー(解決) 日時:2014/01/30 18:04

どうしようもない現象…ということなのでしょうか。 しかし、私のコードが原因ではないというだけでも安心できました。ありがとうございます。
メンテ

Page: 1 |

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

   クッキー保存