DebugとReleaseでプログラムを実行したときに結果が異なり、Releaseの時に
特定の場所で動作が停止してしまいます。
2次元配列を使っているところなので、メモリの使い方が変わったことが原因なのではないかと
思うのですが、どうにもわかりません。
2次元配列を含む構造体をファイルに保存するときに、
2次元配列の[1][~]のとこを変えて保存しようとするだけ動作が止まってしまいます。
具体的には、
この構造体を
(CH_NUMはマクロで定義して、4になっています)
typedef struct{
int pre_chnum;
int battle_high[CH_NUM][CH_NUM];
}save_data_t;
この関数で
void savedata_write(){
FILE *fp;
errno_t err;
if( ( err = fopen_s( &fp, savefile, "wb" ) ) !=0 ) {
MessageBox(
NULL ,
TEXT("セーブデータの保存に失敗しました。") ,
TEXT("書き込み失敗") ,
MB_OK );
}
else{
fwrite( &save_data, sizeof(save_data_t), 1, fp ) ;
fclose( fp );
}
}
(save_dataは save_data_t save_data; として大域変数として宣言しています.)
ファイルに記録しているのですが、2次元配列の2行目の値
( save_data.battle_high[1][(0~3のどれでも)] )
を変えて(この時点では停止していない) savedata_write() で保存するときに動作が停止してしまいます。
なんで[1][~]のとこだけダメなんだろ・・・といった感じなのですが、どういうことなのでしょうか?
