「0x7c95839e で初回の例外が発生しました: 0xC0000005: 場所 0xfffffff8 …」となります
Posted: 2012年11月17日(土) 23:47
最近、開発環境をVisual C++ 2005に変えたばかりです。OSはXPを使用しています。
C言語で迷路の自動作成を「棒倒し法」を使って作ろうとしています。
ですが、作成したコードがいろいろと問題を抱えているようなので質問させていただきました。
maze[]に迷路のデータが入ります。通れるところは0、通れない所は1が入ります。
widthとheightはそれぞれ、迷路の横幅と高さです。
dir[]は四方向を記録しています。
dir[0]: 右
dir[1]: 左
dir[2]: 下
dir[3]: 上
実行すると次のようなメッセージがでます。
変数を表示したり、プログラムの一部をコメントアウトしたりしてみましたが、結局上手くいきませんでした。
ですので、お力を貸してください!
C言語で迷路の自動作成を「棒倒し法」を使って作ろうとしています。
ですが、作成したコードがいろいろと問題を抱えているようなので質問させていただきました。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int *maze, width, height, i, dir[4]={1,-1}, put;
FILE *fp;
width = 21;
height = 21;
dir[2] = width;
dir[3] = -width;
maze = (int *)malloc((int)width*height);
srand((unsigned)time(NULL));
for(i=0; i<width*height; i++){
if(i<width || i>=width*height-width|| !(i%width) || i%width==width-1){
maze[i]=1;
} else {
if(!(i%width%2)&&!(i/width%2)) {
maze[i] = 1;
while(maze[put=i+dir[rand()%4]]);
maze[put]=1;
} else {
maze[i]=0;
}
}
}
// 配列表示
for(i=0; i<width*height; i++){
printf("%d ",maze[i]);
if(i%width == width-1) printf("\n");
}
// ファイル書き出し
fp = fopen("test.txt","w");
for(i=0; i<width*height; i++){
fprintf(fp,"%d ",maze[i]);
if(i%width == width-1) fprintf(fp,"\n");
}
fclose(fp);
free(maze);
return 0;
}widthとheightはそれぞれ、迷路の横幅と高さです。
dir[]は四方向を記録しています。
dir[0]: 右
dir[1]: 左
dir[2]: 下
dir[3]: 上
実行すると次のようなメッセージがでます。
黒い画面はでますが、エラー音がなり、キー待ち状態みたいになるので[☓]で閉じるとエラーのダイアログ(?)がでてきます。'迷路作成.exe': 'C:(省略)\Visual Studio 2005\Projects\迷路作成\debug\迷路作成.exe' を読み込みました。シンボルが読み込まれました。
'迷路作成.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'迷路作成.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'迷路作成.exe': 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll' を読み込みました。シンボルが読み込まれていません。
'迷路作成.exe': 'C:\WINDOWS\system32\msvcrt.dll' を読み込みました。シンボルが読み込まれていません。
'迷路作成.exe': 'C:\WINDOWS\system32\shimeng.dll' を読み込みました。シンボルが読み込まれていません。
'迷路作成.exe': 'C:\WINDOWS\system32\shimeng.dll' をアンロード
迷路作成.exe の 0x7c95839e で初回の例外が発生しました: 0xC0000005: 場所 0xfffffff8 を読み込み中にアクセス違反が発生しました。
迷路作成.exe の 0x7c95839e で初回の例外が発生しました: 0xC0000005: 場所 0xfffffff8 を読み込み中にアクセス違反が発生しました。
迷路作成.exe の 0x7c95839e で初回の例外が発生しました: 0xC0000005: 場所 0xfffffff8 を読み込み中にアクセス違反が発生しました。
(省略)
迷路作成.exe の 0x7c95839e で初回の例外が発生しました: 0xC0000005: 場所 0xfffffff8 を読み込み中にアクセス違反が発生しました。
迷路作成.exe の 0x7c943258 で初回の例外が発生しました: 0xC0000005: 場所 0x00d00ffc に書き込み中にアクセス違反が発生しました。
迷路作成.exe の 0x7c943258 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00d00ffc に書き込み中にアクセス違反が発生しました。
プログラム '[2308] 迷路作成.exe: ネイティブ' はコード 0 (0x0) で終了しました。
変数を表示したり、プログラムの一部をコメントアウトしたりしてみましたが、結局上手くいきませんでした。
ですので、お力を貸してください!