2012-04-12 9 views
0

私は多次元配列を使って複雑なtic tac toeゲームを書こうとしています。この本を印刷するはずのコードの一部である:[3] [3]ここで、G [3] [3] aは、GはGから多次元配列である非常に単純な多次元配列プログラムが開きますVisual studio JIT?

g | g | g 
---------- 
g | g | g 
---------- 
g | g | g 

[1] [1] gの文字列。プログラムは、上記のボードの最初の行のを印刷することになっています。コンソール上でこのプログラムを実行する際に

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
    string g[3][3]; 
    g[1][1] = " "; 
    g[2][1] = " "; 
    g[3][1] = " "; 
    g[1][2] = " "; 
    g[2][2] = " "; 
    g[3][2] = " "; 
    g[1][3] = " "; 
    g[2][3] = " "; 
    g[3][3] = " "; 
    cout << " " << g[1][1] << " " << "|" << " " << g[2][1] << " " << "|" << " " << g[3][1]; 
    cout << "----------------"; 
} 

が開き、私は「TESTIFICATE.exe」[2812]で発生した未処理のWin32の例外を取得します。デバッガを選択するウィンドウが表示されます。コンパイラを選択するとVisual Studio 2010が開き、私の前にいくつかの奇妙なヘッダファイルがあります。

上記のプログラムは、私が未処理のwin32例外メッセージを取得したコードを追加するまで、膨大な作業をしていたメインプログラムの一部です。これはこれまでプログラムで私に起こったことはありません。これはプログラムが比較的単純であるために起こるはずがありません。

その他の詳細:

  • OS:Windows XP ProfessionalのSP3。
  • Visual Studio 2010がインストールされています(エクスプレス版ではありません)
  • 私はCodeblocks IDEを使用しています。
  • コンパイル時に私のIDEに警告またはエラーは表示されません。

さらに詳細が必要な場合はコメントに投稿して投稿します。

+1

あなたのインデックスが間違っているのC++あるべきである 'である0 'ベースは、[2] [2]グラムに[0] [0]あなたはグラムを使用する必要がありますインデックスが付け。 – twain249

答えて

3

アレイインデックスは0から始まるので、g[3][3]は無効なメモリアクセスです。

1

あなたはオフ・バイ・ワンのエラーがあります。

g[1][1]g[0][0]する必要があり、g[2][2]g[1][1]など