void GetSPRData(unsigned char*** spr_data, int *num_chip){
unsigned char char_data[**] = { ww, //枚数
xx1, //size_x1枚目
yy1, //size_y1枚目
zz1,zz1,・・・//deta1枚目、size_x*sizyバイトのデータ
xx2,
yy2,
zz2,zz2,・・・以降降3枚目のサイズ情報とデータ、4枚目の・・・と続く };
int i = 0;
int k;
int l;
int num;
unsigned char size_x;
unsigned char size_y;
*num_chip = (int)char_data[0];
*spr_data = new unsigned char*[*num_chip];
i = 0;
while(i<*num_chip){
if(i == 0)
num = 1;
else
num += 2+char_data[num]*char_data[num+1];
size_x = char_data[num];
size_y = char_data[num+1];
*spr_data[i] = new unsigned char[2+size_x*size_y];
for(k = num, l =0; k<num+size_x*size_y+2; k++, l++){
*spr_data[i][l] = char_data[k];
}
i++;
}
};
//~~~~
unsigned char** spr_charcter1;
int num_chip_character1;
GetSPRData(&spr_charcter1, &num_chip_character1);
用意したキャラクタデータをその配列へ転送するようにしたいのですが
>*spr_data[l] = char_data[k];
の部分で2巡目(l=1以降)から0xC0000005のアクセス違反が発生します。
(~.exe の 0x00451a70 でハンドルされていない例外が発生しました: 0xC0000005:
場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。)
割り当て自体はうまくいっているようなので、動的配列の指示の仕方に問題があると思うのですが
エラーの原因が分かる方いましたらどうぞご指摘ください。
環境はWinXPSP3, コンパイラはVC++2010Expressです。
理解度は、Cについては文法に一通り目を通して試した程度で、C++は各概念について理解した程度です。