デバッグエラーについて

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

デバッグエラーについて

#1

投稿記事 by klm » 14年前

DirectXを使ってゲームを作ろうとしているのですが
ソースをデバッグして実行し終わったときに
「Run-Time Check Failure #2 - Stack around the variable 'KY' was corrupted.」
と言う文字が出てくるのですがこれはいったいどういう意味なんでしょうか?
よければ解決策も教えてください

ソース↓

コード:

#include "DxLib.h"
		

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
		
		int X[1],Y[1];
		X[0]=0,X[1]=0;
		Y[0]=0,Y[1]=0;
		
		int TX[1],TY[1];
		TX[0]=100,TX[1]=700;
		TY[0]=100,TY[1]=30;

		int KX[1],KY[1];
        int mouseX,mouseY;
		int atari=0;

		int White=GetColor(255,255,255);
		int Red=GetColor(255,0,0);
		int Blue=GetColor(0,0,255);

        // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア )
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
        GetMousePoint(&mouseX,&mouseY);
			
			for(int i=0;i<2;i++){
				if(X[i] < mouseX ){
				KX[i]=mouseX-X[i];
				}else{
				KX[i] = -1;
				}

				if(Y[i] < mouseY){
				KY[i]=mouseY-Y[i];
				}else{
				KY[i] = -1;
				}
			}
		
		atari=1;
			for(int i=0;i<2;i++){
				if(KX[i] < TX[i] && KX[i] > 0){
					if(KY[i] < TY[i] && KY[i] > 0){
						atari=0;
					}
				}
			}




		DrawFormatString( 200, 200, White, "%d", atari);
		for(int i=1;i<2;i++){
				DrawBox( X[i], Y[i], TX[i],TY[i],White, TRUE ) ; 
		}	
		DrawBox( X[0], Y[0], TX[0],TY[0],Red, TRUE ) ; 
	
		}
        
        DxLib_End(); // DXライブラリ終了処理
        return 0;
}

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: デバッグエラーについて

#2

投稿記事 by ISLe » 14年前

どこかで配列の範囲外アクセスなどで一時変数のために確保したメモリを破壊しているということです。

例えば
int X[1];
は要素が1個の配列なのでX[0]しか準備されません。
X[1]は範囲外アクセスです。

klm

Re: デバッグエラーについて

#3

投稿記事 by klm » 14年前

ありがとうございます
ご指摘のとおりでした。

閉鎖

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