自分で解決できると思い解決ボタンを押しましたが、わからないので新たにトピを立てて質問させてもらいます(^^;
Dxライブラリ使用のため、以下のように「あるファイル」で画像ハンドルを用意しています。
#define FP_NUM 8 // フィールド画像枚数
namespace
{
/***** 画像 *****/
int fieldPic[FP_NUM]; // フィールド画像
int battleFrame; // コマンド選択フレーム画像
int commandBtn; // コマンドボタン
int bPointerLeft[4]; // バトルポインター(左)
int magicPointer; // 魔法のタメをあらわす(正規)
int magicPointer2; // 魔法のタメをあらわす(影)
int damagePic[10]; // ダメージ
int kaihukuPic[10]; // 回復
int battleTerrop; // バトルテロップ
int battleGage; // バトルゲージ1
int battleGage2; // バトルゲージ2
int ariaGage; // 詠唱ゲージ
}
ロードは一律で以下のような形式です。
// フィールド画像
for(int i = 0; i < FP_NUM; i++){
sprintf(temp, "dat/picture/battleMap/field%d.jpg", i);
if( (fieldPic = LoadGraph(temp)) == -1)
OutputError(true, "%s %s", errorSt, temp);
}
ここでロード失敗時、LoadGraph()が-1を返した場合は
OutputError(true, "%s %s", errorSt, temp);
という関数でエラー箇所を表示し、プログラムを終了するようにしています。
ロード後、ブレークポイントを細かくはさんだ所、値はある瞬間まで正常値(何らかの値を保持)でした。
では、どこでエラーが起こってるのか・・・と調べてみると、上記の制的変数(画像ハンドル)があるファイルの関数を呼び出し、そちらにアドレスが飛んだ後でした。
↓その時の変数の値↓
fieldPic[0] = -1; // error値
fieldPic[1] = 正常値;
fieldPic[2] = -1;
fieldPic[3] = 正常値;
fieldPic[4] = -1;
fieldPic[5] = 正常値;
fieldPic[6] = -1;
fieldPic[7] = 正常値;
他の画像ハンドルも同様に配列に読み込んでる場合は上記のように交互に不正値が出現し、通常のハンドルは不正値の物とそうでないものがあります。
原因が全くわかりません。
このようにしたら治るかもしれないよ、というアドバイスを頂けないでしょうか(^^;
<追記>
もしかしたら、配列を扱う際の不正アクセスが原因かもしれないです・・・。
質問している身で申し訳ないですが、自分で間違えを見つけることができるかもしれません。
