~開発環境~
○Windows Vista Home Premium SP2
○Visual C++ 2010 Express
○DXライブラリ使用
今までは問題なかったのですが、急に変なエラーが出るようになってしまいまして・・・
フルスクリーンでゲームを起動すると、
「project.exeの0x00c4ab88、ハンドルされてない例外が発生:0xc0000005
場所:0x06c6f840の読み込み中にアクセス違反が発生しました」
と表示されて画面がフリーズします。
「project.exe」はゲームの実行ファイル
ウィンドウモードだと問題ないのですが、フルスクリーンだとほぼ毎回と言っていいほど発生します。
発生すると画面がフリーズして、タスクマネージャで「project.exe」を強制終了しようとしても出来ず
Visual C++を強制終了することで、やっと終了出来ます。
原因がまったく分かりません・・・
初期化でウィンドウかフルスクリーンを判断しているので、そこが怪しいと思っているのですが、
何もおかしいところが見当たらないので・・・
初期化回り
LoadandSave( 0 );
if( SAVE.Screen == 1 ){
//ウィンドウモード
ChangeWindowMode( true );
}
//ウィンドウタイトル名
SetMainWindowText( "testSTG" );
//フルスク時の設定
SetGraphMode( 640, 480, 32 );
//ログなし
SetOutApplicationLogValidFlag( false );
// DXライブラリ初期化処理
if( DxLib_Init() == -1 ){
return -1 ; // エラーが起きたら直ちに終了
}
//描画を裏画面
SetDrawScreen( DX_SCREEN_BACK );
/*================================================================
データ保存
0 = ロード
1 = セーブ
2 = デリート
================================================================*/
void LoadandSave( int act ){
char *fname = "save.dat";
FILE *fp;
bool res = 0;
if( act == 0 ){
//ファイル読み込み
if( (fp = fopen( fname, "r" )) == NULL ){
res = 1;
}
else{
//ファイルからデータを読み込む
fread( &SAVE, sizeof(Data), 1, fp ) ;
}
}
else if( act == 1 ){
//ファイル書き込み
if( (fp = fopen( fname, "w" )) == NULL ){
res = 1;
}
else{
fwrite( &SAVE, sizeof(Data), 1, fp );
}
}
else if( act == 2 ){
//ファイル初期化
if( (fp = fopen( fname, "w" )) == NULL ){
fclose( fp );
}
res = 1;
}
if( res == 0 ){
fclose( fp );
}
else{
//システム初期設定
SAVE.HiScore = 10000;
SAVE.ClearFlag = 0;
SAVE.GameLevel = 1;
SAVE.Remain = 2;
SAVE.Screen = 1;
//キーコンフィグ初期設定
SAVE.ShotConf = 2;
SAVE.BombConf = 3;
SAVE.SpeedConf = 6;
SAVE.WeaponConf = 1;
SAVE.PauseConf = 9;
}
}