トラブル対処法

実行するごとに演算結果が異なる

確保していない領域からは未定義の値が返されるため、実行するごとに異なる結果となることがあります。このような場合には配列の境界チェックなど、読み込み先を確認します。

int a[] = { 1,2,3 };

int r1 = a[0] + a[1]; // 3
int r2 = a[2] + a[3]; // -858993457 (0xcccccccf)

Visual C++では初期化せずに定義した領域は0xcで埋められるため、その値から初期化していないことを推測できます。≫メモリ割り当ての既定値

int a;
int *p = &a;
int r = (*p) + 1; // -858993459 (0xcccccccd)
Microsoft Learnから検索