0x0057879B で例外がスローされました の解決方法
マップチップを使って、背景を作ろうとしたときに、
「0x0057879B で例外がスローされました (ファイル.exe 内): 0xC0000005: 場所 0x00000008 の読み取り中にアクセス違反が発生しました」
というエラーが発生しました。
デバッグしたところ、BG_Draw内のDrawGraphでエラーが起きているようなのですが、原因が全く分かりません。
このエラーを解決し、マップチップを描画するには一体どうすればいいのでしょうか?
エラーコード
0x0057879B で例外がスローされました (ファイル.exe 内): 0xC0000005: 場所 0x00000008 の読み取り中にアクセス違反が発生しました
該当のソースコード
C++
1/*-------------------*/ 2//インクルード 3/*-------------------*/ 4#include"ALL.h" 5 6 7/*-------------------*/ 8//マクロ 9/*-------------------*/ 10 11 12/*-------------------*/ 13//変数 14/*-------------------*/ 15int map_chip[MAX_CHIP]; 16int map[MAP_CHIP_HEIGHT][MAP_CHIP_WIDTH]; 17 18 19void BG_Init() 20{ 21 int map[MAP_CHIP_HEIGHT][MAP_CHIP_WIDTH] = { 22 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 23 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 24 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 25 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 26 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 27 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 28 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 29 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 30 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 31 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 32 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 33 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 34 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 35 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 36 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 37 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 38 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 39 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 40 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 41 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 42 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 43 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 44 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, 45 }; 46} 47 48void BG_Update() 49{ 50 LoadDivGraph("chip.png", 3, 3, 0, 32, 32, map_chip); //chipに画像データ 51} 52 53void BG_Draw() 54{ 55 for (int y = 0; y < MAP_CHIP_HEIGHT; y++) { //縦のループ 56 for (int x = 0; x < MAP_CHIP_WIDTH; x++) { //横のループ 57 DrawGraph(x*MAP_CHIP_SIZE, y*MAP_CHIP_SIZE, map_chip[map[y][x]], TRUE); 58 } 59 60 } 61 62 63 } 64
試したこと
変数名を変えてみたりしたのですが、結果とは関係ありませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
MAX_CHIP、MAP_CHIP_WIDTH、MAP_CHIP_HEIGHTの値はいくつになっていますか?(xとyが逆である点を指摘しましたが、元々の定義が縦の長さ・横の長さになっていたことを見落としていたので撤回します)
回答2件
あなたの回答
tips
プレビュー