ページ 1 / 1
DXライブラリを使用したゲームが異常にメモリをとる
Posted: 2013年10月20日(日) 00:04
by 白鳥(しらとり)
失礼します
DXライブラリを使用してゲームを作っている時に、時間が経つにつれカーソルを動かすだけでもカクカクするようになりました
不思議に思いタスクマネージャーを開いてみると基本1.2GB位しか使用してなかったメモリが3.6GBくらいまで上がっていました。
whileループ内ではメモリ領域をとるようなことはしていないつもりなのですが…
なにか解決策に心当たりがある方がいましたら是非教えて下さい。
なにか足りない情報があれば書いてもらえれば補足します
Re: DXライブラリを使用したゲームが異常にメモリをとる
Posted: 2013年10月20日(日) 00:06
by みけCAT
よくあるパターンとしては、ループ内で毎回LoadGraphしているということがあります。
whileループ内ではメモリ領域をとるようなことはしていないけど、forループ内でメモリ領域をとっているということではありませんか?
Re: DXライブラリを使用したゲームが異常にメモリをとる
Posted: 2013年10月20日(日) 00:10
by 白鳥(しらとり)
みけCATさん
返信ありがとうございます
LoadGraph系は別関数にまとめてwhileループ外にあります
forループは今回は使ってないです…
whileループの中は基本的にDrawGraphなどメモリに保存したものを使う系ですね
Re: DXライブラリを使用したゲームが異常にメモリをとる
Posted: 2013年10月20日(日) 00:24
by みけCAT
単に大量の領域を確保しているということは無いですか?
たとえば、20000x20000のint型(32ビットと仮定)二次元配列は約1.5GBになります。
Re: DXライブラリを使用したゲームが異常にメモリをとる
Posted: 2013年10月20日(日) 00:26
by softya(ソフト屋)
やっていないつもりと、実際にやっていないかの保証の差はテストして初めて保証できます。
本当にLoadGraphを通っていないかブレークポイントで確認してみてはどうでしょうか?
LoadGraph()がある関数全てにブレークポイントを貼ってみて下さい。
あと音楽系でも間違うとメモリをリークするのでそちらも確認を。
【補足】
新たにハンドルを取得するモノ全てを疑って下さい。
Re: DXライブラリを使用したゲームが異常にメモリをとる
Posted: 2013年10月20日(日) 00:41
by 白鳥(しらとり)
みけCATさん
softya(ソフト屋)さん
返信ありがとうございます
2次元配列は使ってないですし、変数もi合計して30ないので大丈夫だと思います
ブレークポイント初めて使ってみたので正しい使い方かはわかりませんが、全てに貼ってみてすべて通過は1回でした
新たにハンドルを取得するものというと…MakeScreenは入りますか?
MakeScreenはwhileループに入ってるのでもしかしたらそれかもしれないです
Re: DXライブラリを使用したゲームが異常にメモリをとる
Posted: 2013年10月20日(日) 00:42
by softya(ソフト屋)
MakeScreenもハンドルを生成するものです。つまりメモリを消費します。
Re: DXライブラリを使用したゲームが異常にメモリをとる
Posted: 2013年10月20日(日) 00:47
by 白鳥(しらとり)
softya(ソフト屋)さん
MakeScreenをwhileループ外に出したらメモリ消費が収まりました
お二方、本当にありがとうございました