- ベストアンサー
配列の足し算でのエラー(C++builder ver.6)
配列の足し算のところでエラーが発生しました。 このような文の所です。 pLength[label]=pLength[label]+1.0; コンパイル自体は問題なくできたのですが、いざ実行させると下のようなエラーメッセージが表示されました。いったい何がいけないのでしょうか?よろしくおねがいします。 --------------------------- デバッガ例外が発生 --------------------------- プロジェクト Project.exe が EAccessViolation クラスの例外を生成しました。 'モジュール 'Project.exe' のアドレス 00404BB2 でアドレス 0A45C614 に対する読み込み違反がおきました。' プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>いったい何がいけないのでしょうか? 多分、labelが配列外参照を起こすような位置を指標していると思います。下に例を挙げます。 int a[2]; int i( a[2] ); // a[0] か a[1] ならOK 次点として考えられるのは、pLengthが異常な位置を指標してしまっている事です。ループ処理中にpLengthのアドレッシングを間違えている等が推測できます。
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
多分、配列範囲外なのだと思います。 double a[100]; とかしておいて a[100]なんてアクセスしていませんか >1から100にして double a[100];//要素数が100個 の時は、a[0]~a[99]です
- jacta
- ベストアンサー率26% (845/3158)
> pLengthはdouble型の配列です。labelの範囲は1から100にしてfor文でまわしています。 > このような配列+整数みたいな書き方は別に間違っていませんよね? 書き方自体は間違っていません。 pLengthの要素数は101以上になっていますか?
- jacta
- ベストアンサー率26% (845/3158)
これだけでは正確なことは何もわかりません。 > pLength[label]=pLength[label]+1.0; pLengthはポインタでしょうか?不正な値(NULLとか、ゴミとか、解放済みの領域とか)になっていませんか? labelが配列の範囲を超えるような値(マイナスとか要素数以上)になったいませんか?
補足
そうですよね。 pLengthはdouble型の配列です。labelの範囲は1から100にしてfor文でまわしています。 このような配列+整数みたいな書き方は別に間違っていませんよね?