トップページ > 過去ログ > 記事閲覧
時間経過で画面が消えてしまうことについて
名前:ニャンギズ 日時: 2008/01/15 10:31

プログラムを実行すると4分たったころで画面が真っ黒になり、操作ができなくなります。短いプログラムだと10分で消えました。 何か問題があるのでしょうか? 解決法があったら教えてください。 (できる限りメモリー消費は抑えてあります)

Page: 1 |

Re: 時間経過で画面が消えてしまうことについて ( No.1 )
名前:crow 日時:2008/01/15 17:41

こんにちは。 情報が少ないのでなんとも言えないですが、 newしたオブジェクトのdeleteし忘れや、 画像・音声などの多重読み込みなど、 いくつか考えられるケースはあると思います。 ライブラリ関数の使い方を間違えている場合もあるかもしれません。 それをもう一度確認してみてください。 短いプログラムでも発生するのでしたら、 ここにそのプログラムを貼り付けてみるといいと思います。
Re: 時間経過で画面が消えてしまうことについて ( No.2 )
名前:ニャンギズ 日時:2008/01/15 21:15

#include"start.h" char x,y ; char gazou; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE); if(DxLib_Init() == -1) return(-1); SetDrawScreen(DX_SCREEN_BACK) ; while(ProcessMessage()==0&&CheckHitKey(KEY_INPUT_ESCAPE)==0){ ClsDrawScreen(); int key=GetJoypadInputState(DX_INPUT_KEY_PAD1); if((key&PAD_INPUT_UP)){ y=y-1;} if((key&PAD_INPUT_DOWN)){y=y+1;} if((key&PAD_INPUT_LEFT)){x=x-1; } if((key&PAD_INPUT_RIGHT)){x=x+1;} LoadGraphScreen(0,0,"・・・・.png",FALSE); gazou= LoadGraph("・・・・2.png"); DrawGraph(0+x*3 ,0+y*3 ,gazou,TRUE); gazou= LoadGraph("・・・・3.png"); DrawGraph(100,200 ,gazou,TRUE); ScreenFlip(); } DxLib_End(); return(0); } これが短いほうのプログラムです。これは、1分28秒で消えました。
Re: 時間経過で画面が消えてしまうことについて ( No.3 )
名前:お父さん 日時:2008/01/15 22:33

ニャンギズさん、こんばんは 横から失礼します。 LoadGraphScreen() や LoadGraph() を while ループの外に出してやればいいんじゃないでしょうか? ニャンギズさんのプログラムを少し変更して、以下のプログラムで試してみましたが、20分経っても画面は真 っ黒にはならず、キー操作も正常にできました。 #include "dxlib.h" int x, y ; int gazou1, gazou2, gazou3; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE); if(DxLib_Init() == -1) return(-1); SetDrawScreen(DX_SCREEN_BACK) ; gazou1= LoadGraph("file1.png"); gazou2= LoadGraph("file2.png"); gazou3= LoadGraph("file3.png"); while(ProcessMessage()==0&&CheckHitKey(KEY_INPUT_ESCAPE)==0){ ClsDrawScreen(); int key=GetJoypadInputState(DX_INPUT_KEY_PAD1); if((key&PAD_INPUT_UP)){y=y-1;} if((key&PAD_INPUT_DOWN)){y=y+1;} if((key&PAD_INPUT_LEFT)){x=x-1;} if((key&PAD_INPUT_RIGHT)){x=x+1;} DrawGraph(0, 0, gazou1, FALSE); DrawGraph(0+x*3, 0+y*3, gazou2, TRUE); DrawGraph(100, 200, gazou3, TRUE); ScreenFlip(); } DxLib_End(); return(0); }
Re: 時間経過で画面が消えてしまうことについて ( No.4 )
名前:crow 日時:2008/01/16 01:09

そうですね、お父さんさんの仰るとおり、 LoadGraphなどの関数で読み込んだデータは、 自分で消去するかDXライブラリ終了時にしかメモリが開放されないため、 必要以上に読み込んでしまうとメモリが溢れてしまいます。 ただ、LoadGraphScreenはループの中で使用してもメモリに問題はないと思います。 (とはいえ現実的ではないので、使用しない方が無難ですね)
Re: 時間経過で画面が消えてしま ( No.5 )
名前:ニャンギズ 日時:2008/05/07 07:27

ありがとうございます とても助かりました

Page: 1 |