• ベストアンサー

配列の足し算でのエラー(C++builder ver.6)

配列の足し算のところでエラーが発生しました。 このような文の所です。 pLength[label]=pLength[label]+1.0; コンパイル自体は問題なくできたのですが、いざ実行させると下のようなエラーメッセージが表示されました。いったい何がいけないのでしょうか?よろしくおねがいします。 --------------------------- デバッガ例外が発生 --------------------------- プロジェクト Project.exe が EAccessViolation クラスの例外を生成しました。 'モジュール 'Project.exe' のアドレス 00404BB2 でアドレス 0A45C614 に対する読み込み違反がおきました。' プロセスは停止しています。再開するにはステップ実行または実行を選択してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • rigidbody
  • ベストアンサー率60% (20/33)
回答No.2

>いったい何がいけないのでしょうか? 多分、labelが配列外参照を起こすような位置を指標していると思います。下に例を挙げます。 int a[2]; int i( a[2] ); // a[0] か a[1] ならOK 次点として考えられるのは、pLengthが異常な位置を指標してしまっている事です。ループ処理中にpLengthのアドレッシングを間違えている等が推測できます。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

多分、配列範囲外なのだと思います。 double a[100]; とかしておいて a[100]なんてアクセスしていませんか >1から100にして double a[100];//要素数が100個 の時は、a[0]~a[99]です

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> pLengthはdouble型の配列です。labelの範囲は1から100にしてfor文でまわしています。 > このような配列+整数みたいな書き方は別に間違っていませんよね? 書き方自体は間違っていません。 pLengthの要素数は101以上になっていますか?

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

これだけでは正確なことは何もわかりません。 > pLength[label]=pLength[label]+1.0; pLengthはポインタでしょうか?不正な値(NULLとか、ゴミとか、解放済みの領域とか)になっていませんか? labelが配列の範囲を超えるような値(マイナスとか要素数以上)になったいませんか?

YCPM
質問者

補足

そうですよね。 pLengthはdouble型の配列です。labelの範囲は1から100にしてfor文でまわしています。 このような配列+整数みたいな書き方は別に間違っていませんよね?