ページ 1 / 1
終了するとエラー
Posted: 2009年9月21日(月) 18:02
by situmon
なぜか終了すると(ゲームを終わると)
Shooting Game.exe の 0x00d547b7 で初回の例外が発生しました: 0xC0000005: 場所 0xfeeeff4e を読み込み中にアクセス違反が発生しました。
Shooting Game.exe の 0x00d547b7 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xfeeeff4e を読み込み中にアクセス違反が発生しました。
と出てきて正常に終われません。
どうしてなのでしょうか?
お願いします。
Re:終了するとエラー
Posted: 2009年9月21日(月) 18:04
by MNS
情報が少なすぎますが、
おそらく解放処理などで、不正なポインタなどにでもアクセスしたのではないでしょうか?
Re:終了するとエラー
Posted: 2009年9月21日(月) 18:07
by situmon
MNSさん回答ありがとうございます。
コードは
#include "DxLib.h"
#include "Global.h"
extern int GetHitKeyStateAll_2();
extern int CheckStateKey(unsigned char Handle);
extern void GetHitPadStateAll();
extern int CheckStatePad(unsigned int Handle);
void message_box(){
int flag;
flag=MessageBox(
NULL ,
TEXT("フルスクリーンモードで起動しますか?") ,
TEXT("スクリーン設定") ,
MB_YESNO | MB_ICONQUESTION );
if(flag==IDNO)
ChangeWindowMode( TRUE );
}
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;
if(ClearDrawScreen()!=0)return -1;
GetHitKeyStateAll_2();
GetHitPadStateAll();
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
//初期化
extern void Bgm_se_load();
extern void load();
extern void initial();
//省略
//o→
extern void FpsTimeFanction();
int RefreshTime=0;
//o←
SetOutApplicationLogValidFlag( FALSE );
message_box();
if( DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK ) !=0) return -1;
//初期化処理
save_data_load();
load();
Bgm_se_load();
while(ProcessLoop()==0){
switch(main_flag){
case 99://タイトル用
initial();
main_flag=0;
break;
case 0://タイトル用
Title_Draw();
Music_Play();
t_count++;
break;
case 1://レベル選択
Choose_level_Draw();
t_count++;
break;
//省略
}
FpsTimeFanction();//old
ScreenFlip();//裏画面を表画面に反映
while(GetNowCount() - RefreshTime < 17);//old
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
具体的な解決法なんでしょう。
Re:終了するとエラー
Posted: 2009年9月21日(月) 18:19
by situmon
どうやら、ゲームパッドをつないでいるときだけ起こるようです...
Re:終了するとエラー
Posted: 2009年9月21日(月) 18:39
by ねこ
とりあえずどこで落ちるのかトレースしてみてはどうでしょうか?
DxLib_End内だとどうしようもないですし。
Re:終了するとエラー
Posted: 2009年9月21日(月) 18:48
by Justy
>どうやら、ゲームパッドをつないでいるときだけ起こるようです
似たような症例は聞いたことがありますが、状況を整理するために
何の関数を呼び出した後落ちているのか、0x00d547b7がどのモジュールが
管理するメモリなのか調べてみて下さい。
デバッガでステップ実行したり、モジュールウインドウで該当するアドレスを
調べれば何か判るはずです。
その結果、DxLib_End関数内で、且つジョイパッドが使用しているモジュールの中で
落ちているとなると
C言語何でも質問掲示板
ttp://www.play21.jp/board/formz.cgi?action=res&resno=26114&page=&lognum=82&id=dixq&rln=26163
と同様の現象であることが疑われます。
これらは結局真の原因は判っていないので、ジョイパッドを抜くしか
現状回避策がありません。
その場合、本家で聞いた方がいいかと思います。
Re:終了するとエラー
Posted: 2009年9月21日(月) 19:36
by situmon
よくしらべていませんが、エレコムの結構昔?というより、生産販売終了されたのつかっているので、相性があわないのかもしれません。若干違うかもしれませんが、URL先の質問者と同じ症状です。
しょうがないのですね。
バグであったら(こちらのプログラムによる)よくないな、と思いましたので・・・
ですが多分抜けばいいですね。
みなさまどうもありがとうございました。