GameProg.exe の 0x00000000 でハンドルされていない例外が・・・ と表示されます

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
きずなん

GameProg.exe の 0x00000000 でハンドルされていない例外が・・・ と表示されます

#1

投稿記事 by きずなん » 14年前

ただいま2DRPGにチャレンジしてる初心者です。


『GameProg.exe の 0x00000000 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。』

と表示されてしまいます。
エラーを引き起こしてるコード部分は下のようになります。

コード:

	int Image[200];
	LoadDivGraph( "画像/img15_2.png" , 300 , 20 , 15 , 32 , 32 , Image ) ;//画像を16個に分割してImage配列に保存
ここを消せばエラーしないのですが、なんでここでエラーするのか分かりません。
LoadDivGraphは、画像をメモリに保存するだけですよね?
なんで保存しただけでエラーが起きるのかがイマイチ分からないので質問しました。

どこが間違いか、ご指摘お願いします。
一応、コード全文もはっておきます。
(DrawBoxをDrawGraphに変えて、マップチップを分割したものを自由にマップに貼り付けるようにしようとしているところです)

コード:

// マップ表示基本
#include "DxLib.h"

#define MAP_SIZE	32			// マップチップ一つのドットサイズ

#define MAP_WIDTH	20			// マップの幅
#define MAP_HEIGHT	15			// マップの縦長さ

// マップのデータ
int MapData[ MAP_HEIGHT ][ MAP_WIDTH ] =
{
	{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } ,
	{ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } ,
	{ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } ,
	{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1 } 
} ;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
						 LPSTR lpCmdLine, int nCmdShow )
{
	ChangeWindowMode(TRUE); // ウィンドウモードに設定

	int Image[200];
	LoadDivGraph( "画像/img15_2.png" , 300 , 20 , 15 , 32 , 32 , Image ) ;//画像を16個に分割してImage配列に保存

	int i , j ;

	if( DxLib_Init() == -1 )	// DXライブラリ初期化処理
	{
		 return -1;		// エラーが起きたら直ちに終了
	}

	// マップを描く
	for( i = 0 ; i < MAP_HEIGHT ; i ++ )
	{
		for( j = 0 ; j < MAP_WIDTH ; j ++ )
		{
			if( MapData[ i ][ j ] == 0 )
			{
				DrawBox( j * MAP_SIZE , i * MAP_SIZE ,
						j * MAP_SIZE + MAP_SIZE , i * MAP_SIZE + MAP_SIZE , 
							GetColor( 255 , 0 , 0 ) , TRUE ) ;
			}
		}
	}

	// キー入力待ち
	WaitKey() ;

	DxLib_End() ;		// DXライブラリ使用の終了処理

	return 0 ;		// ソフトの終了
}


beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: GameProg.exe の 0x00000000 でハンドルされていない例外が・・・ と表示されます

#2

投稿記事 by beatle » 14年前

画像を16個に分割したいのか300個に分割したいのか,どちらでしょうか.300個に分割したいのだとすると,Imageの要素が200個では足りませんよね.

きずなん

Re: GameProg.exe の 0x00000000 でハンドルされていない例外が・・・ と表示されます

#3

投稿記事 by きずなん » 14年前

返信ありがとうございます。
300個に分割したいのでImage[300]に変えましたが、やはりまったく同じエラーが起きます。

修正後のコードです。

コード:

// マップ表示基本
#include "DxLib.h"
 
#define MAP_SIZE    32          // マップチップ一つのドットサイズ
 
#define MAP_WIDTH   20          // マップの幅
#define MAP_HEIGHT  15          // マップの縦長さ
 
// マップのデータ
int MapData[ MAP_HEIGHT ][ MAP_WIDTH ] =
{
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
    { 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } ,
    { 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } ,
    { 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } ,
    { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1 } 
} ;
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                         LPSTR lpCmdLine, int nCmdShow )
{
    ChangeWindowMode(TRUE); // ウィンドウモードに設定
 
    int Image[300];
    LoadDivGraph( "画像/img15_2.png" , 300 , 20 , 15 , 32 , 32 , Image ) ;//画像を300個に分割してImage配列に保存
 
    int i , j ;
 
    if( DxLib_Init() == -1 )    // DXライブラリ初期化処理
    {
         return -1;     // エラーが起きたら直ちに終了
    }
 
    // マップを描く
    for( i = 0 ; i < MAP_HEIGHT ; i ++ )
    {
        for( j = 0 ; j < MAP_WIDTH ; j ++ )
        {
            if( MapData[ i ][ j ] == 0 )
            {
                DrawBox( j * MAP_SIZE , i * MAP_SIZE ,
                        j * MAP_SIZE + MAP_SIZE , i * MAP_SIZE + MAP_SIZE , 
                            GetColor( 255 , 0 , 0 ) , TRUE ) ;
            }
        }
    }
 
    // キー入力待ち
    WaitKey() ;
 
    DxLib_End() ;       // DXライブラリ使用の終了処理
 
    return 0 ;      // ソフトの終了
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: GameProg.exe の 0x00000000 でハンドルされていない例外が・・・ と表示されます

#4

投稿記事 by softya(ソフト屋) » 14年前

DxLib_Initの前に読み込んではいけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

きずなん

Re: GameProg.exe の 0x00000000 でハンドルされていない例外が・・・ と表示されます

#5

投稿記事 by きずなん » 14年前

なるほど。解決しました!
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る