Visual Studio 2022「C6011 NULL ポインター 'nextField' を逆参照しています。」がわからない

実現したいこと

二次元配列をmalloc関数を使って、メモリ確保したい

発生している問題・分からないこと

ゲームづくりの本を読みながら、ライフゲームを作成していたのですが、本の中では、malloc関数を使わずに、二次元配列を宣言していたのですが、私は、malloc関数を使って、二次元配列を確保したかったので、コードを変更したところ、以下のようなエラーが出てきました。何が原因かわからないのです。

エラーメッセージ

error

1重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 2警告 C6011 NULL ポインター 'nextField' を逆参照しています。 ライフゲーム 3警告 C6011 NULL ポインター 'nextField[i]' を逆参照しています。ライフゲーム 4警告 C6011 NULL ポインター 'nextField[y]' を逆参照しています。ライフゲーム 5警告 C6385 'nextField' から無効なデータを読み取っています。 ライフゲーム 6 7 8

該当のソースコード

//[4-3]ステップ分のシミュレーションを実行する関数を宣言する void StepSimulation() { //[4-3-1]次の世代のフィールドを宣言する //bool nextField[FIELD_HEIGHT][FIELD_WIDTH] = {};この行は本に書かれていたコードです。 //次の世代のフィールドのメモリを確保する。 bool** nextField = (bool**)malloc(FIELD_HEIGHT * sizeof(bool*)); if (nextField != NULL) { for (int i = 0; i < FIELD_HEIGHT; i++) { nextField[i] = (bool*)malloc(FIELD_WIDTH * sizeof(bool)); } } else { fprintf(stderr, "メモリが確保できません。\n"); getchar(); }        //配列の初期化 for (int i = 0; i < FIELD_HEIGHT; i++) { for (int j = 0; j < FIELD_WIDTH; j++) { nextField[i][j] = false; } } //[4-3-2]すべての行を反復する for (int y = 0; y < FIELD_HEIGHT; y++) { //[4-3-3]すべての列を反復する for (int x = 0; x < FIELD_WIDTH; x ++) { //[4-3-4]対象のセルと隣接する、生きているセルの数を宣言する int livingCellcount = GetLivingCellsCount(x, y); //[4-3-5]隣接する生きたセルの数で分岐する if (livingCellcount <= 1)//[4-3-5]1個なら { //[4-3-6]対象のセルを死滅させる nextField[y][x] = false; } else if (livingCellcount == 2)//[4-3-7]2個なら { //[4-3-8]現状維持 nextField[y][x] = field[y][x]; } else if (livingCellcount == 3)//[4-3-9]3個なら { //[4-3-10]対象のセルを誕生/生存させる nextField[y][x] = true; } else if(livingCellcount >= 4)//[4-3-11]4つ以上なら { //[4-3-12]対象のセルを死滅させる nextField[y][x] = false; } } }

試したこと・調べたこと

上記の詳細・結果

ネットで検索をしましたが、解決できませんでした。

補足

Visual Studio 2022

コメントを投稿

0 コメント