ページ 11

終了するとエラー

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先の質問者と同じ症状です。
しょうがないのですね。
バグであったら(こちらのプログラムによる)よくないな、と思いましたので・・・
ですが多分抜けばいいですね。
みなさまどうもありがとうございました。