はじめまして、私は簡単?なGUI操作を行うプログラムをDxライブラリで製作しています。 今回そのプログラムのテスト時に非常にメモリを食う箇所がありました。(監視は大雑把ですがタスクマネージャーです) イカにプログラムの構造を書いておきます。
マウスの座標を調べ、画面上のボタンがクリックされるのを待ちます。クリックされると処理番号がprocess変数に代入されて別々の処理が実行されていき最後にデフォルトの処理番号に戻されます。
process =1: /*処理番号の初期化(デフォルト)*/
while( !ProcessMessage( ) ){ /*メインループです*/
Mouse_Click( mouse_x, mouse_y ); /*この関数でprocess変数を変更していきます。*/
switch( process ){
case 1:
/*デフォルト処理*/
case 2:
/*番号2番の処理*/
(略)
}
}
このような構造でGUI操作を行うのですが、デフォルトではなんらメモリに変化はありません。。。しかしボタンを押して処理を呼び出すと毎回メモリが増加します。各処理の最後はメモリの後始末(mallocで確保しております)を行っているにもかかわらずデフォルトに戻るときに使用量が減ってくれません(泣)・・・・ボタンを押してデフォルトに戻るの繰り返しをする度に増加する一方なのです。
質問:どうしてメモリが増加してて、解放しているのに減少しないのか? どなたかアドバイスできる方よろしくお願いします。!!
メモリ使用量が大きくなる原因
Re: メモリ使用量が大きくなる原因
これだけのプログラムでは、原因は特定できません。
現象を再現できるプログラム全体を記載したほうが、回答を得られやすいと思います。
現象を再現できるプログラム全体を記載したほうが、回答を得られやすいと思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: メモリ使用量が大きくなる原因
DXライブラリが原因なら、何らかの画像等をロードしたままて放置しているとしか思えません。
画像とかロードしていませんか?
画像とかロードしていませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: メモリ使用量が大きくなる原因
みなさんアドバイスありがとうございます>< しかし以前問題は解決せずです
>>softya様 画像は背景とボタンを数個はじめにLoadGraph関数でメモリに読込んでおります。何度もロードしてないはずなんですが・・・
>>softya様 画像は背景とボタンを数個はじめにLoadGraph関数でメモリに読込んでおります。何度もロードしてないはずなんですが・・・
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: メモリ使用量が大きくなる原因
それは実際にデバッガ等でちゃんと確認された事実でしょうか?type さんが書きました: >>softya様 画像は背景とボタンを数個はじめにLoadGraph関数でメモリに読込んでおります。何度もロードしてないはずなんですが・・・
思い込みと実際に確認したのでは話がだいぶ違いますので、絶対確認して下さい。
それがもし問題なければ、mallocやnewのあるところを疑うしか有りませんね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。