使用ツールはvisualstudio 言語はC・C++です。
起きている問題はタイトルの通り、関数の引数として二次元配列の先頭アドレスを渡し、for文を使ってそこに値を代入したいです。
前提・実現したいこと
C・C++を使ってゲームのセーブ・ロード機能を作っています。
そのロード機能の実装中に下記のエラーが出ました。
発生している問題・エラーメッセージ
0x00D160A1 で例外がスローされました (gp1.exe 内): 0xC0000005: 場所 0x006421A0 への書き込み中にアクセス違反が発生しました
該当のソースコード
C・C++
1void Load_Common(const char* name, char mapDat[BG::CHIP_NUM_Y][BG::CHIP_NUM_X]) 2 char rhs[BG::CHIP_NUM_Y * BG::CHIP_NUM_X] = {}; 3 ifstream read; 4 read.open(name); 5 read.read((char*)&rhs, sizeof(int) * (BG::CHIP_NUM_Y * BG::CHIP_NUM_X)); 6 read.close(); 7 8 for (int i = 0; i < BG::CHIP_NUM_Y; i++) 9 { 10 for (int j = 0; j < BG::CHIP_NUM_X; j++) 11 { 12 mapDat[i][j] = rhs[i * BG::CHIP_NUM_X + j]; 13 「ここで例外がスローされる」 14 } 15 } 16 17}
試したこと
配列の初期化忘れをしていないか確認
補足情報(FW/ツールのバージョンなど)
//-----------------------------------補足-----------------------------------------//
BG::CHIP_NUM_Xは定数
渡される配列はシングルトンパターンを利用したクラスの2次元配列
下記はその宣言
class sendData /シングルトンパターン/
{
public:
//変数****
char overmap[BG::CHIP_NUM_Y][BG::CHIP_NUM_X] = {};
char undermap[BG::CHIP_NUM_Y][BG::CHIP_NUM_X] = {};
char overgimmick[BG::CHIP_NUM_Y][BG::CHIP_NUM_X] = {};
char undergimmick[BG::CHIP_NUM_Y][BG::CHIP_NUM_X] = {};
省略
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/18 11:47