• ベストアンサー

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

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

  • YCPM
  • お礼率4% (1/24)

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

  • ベストアンサー
  • 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文でまわしています。 このような配列+整数みたいな書き方は別に間違っていませんよね?

関連するQ&A

  • C++Builderのエラーメッセージ

    使用するコンポーネントの数を増やしてゆくと、以下のようなメッセージに遭遇することがあります。(今回は、実行時の定数を大きくしたときのみ発生です。) デバッガの例外発生 プロジェクトtest.exeがElistErrorクラスの例外を生成しました。'リストのインデックスが範囲を超えています(7)’プロセスは停止しています。再開するにはステップ実行または実行を選択して下さい。 'リストのインデックスが範囲を超えています(7)’とは、何を意味しているのですか?また、数字の7の意味は何でしょう?

  • c++Builder ver6.0のパッケージエラー

    コンパイル実行できたc++Builderプログラムを USBメモリーに保存し自宅のパソコンで 実行させたところ とくに複雑でもないプログラムなのに --------------- コンパイル [リンカ 致命的エラー] Fatal: ファイル DCLUSR.BPI が開けません といったヘンなエラーが発生します. メニューバーのプロジェクトのオプション のパッケージ ダグの パッケージ再構築 の中のDCLUSRをいちいち削除しないと 実行ができません。 何かよい方法はないものでしょうか・

  • I/Oエラー(Delphi)

    現在Delphiでプログラムを組んでいるのですが、Writelnを使用すると下記の様なエラーが発生してしまいます。 「プロジェクト Project1.exe が EInOutError クラスの例外を生成しました。 'I/Oエラー (105)' プロセスは停止しています。再開するにはステップ実行または実行を選択してください。」 解決法をどなたか教えてください。 よろしくお願いします。

  • Timerコンポーネント

    プログラミング超素人です。 最近、Delphi6personalをダウンロードして、 win2000上で使ってます。 簡単なソフトを作ろうと思い、とりあえずコンポーネントをベタベタ貼って、雰囲気を味わっています。 コンパイル時に出るエラーは、大体、ヘルプなどを参考にして、改変したのですが、コンパイル後に出るエラーの 意味が良くわかりません。 MediaplayerコンポーネントのFilenameにOpendialogで 開いたファイル名を代入して、再生しようと思っていますが、何回か再生、停止、Opendialogを使っていると以下のようなエラーが出ます。 何が悪いのでしょうか。 サルにもわかるように解説お願いいたします。 --------------------------- デバッガ例外が発生 --------------------------- プロジェクト Project020531.exe が EMCIDeviceError クラスの例外を生成しました。 'そのデバイス名はこのアプリケーションでエイリアスとして既に使用されています。一意のエイリアスを使用してください。' プロセスは停止しています。再開するにはステップ実行または実行を選択してください。 --------------------------- OK ヘルプ(H) ---------------------------

  • C# 配列?

    C#2005で以下のコードを実行すると 'System.NullReferenceException' のハンドルされていない例外が テスト.exe で発生しました。 追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。 となります。配列は定義しているのですが 何がおかしいのでしょうか? Label[] lblTest = new Label[5]; private void Init() { for (int i = 0; i < 5; i++) { lblTest[i].Text = "1"; // ここで、エラー } }

  • C#:VS2008について

    現在VS2008C#で開発を行っています。 そこで、デバッグで実行するとSaveFileDialogの表示時に下記のエラーが発生しています。 "OLE が呼び出される前に、現在のスレッドが Single Thread Apartment (STA) モードに設定されていなければなりません。Main 関数に STAThreadAttribute が設定されていることを確認してください。 この例外はデバッガがプロセスにアタッチされている場合にのみ発生します。" しかし、EXEで実行した場合上記エラーが発生せず、正常にSaveFileDialogが表示されます。 そこで質問なのですが、デバッグで実行した場合と、EXEで実行した場合では何か違いがあるのでしょうか?また、なぜ上記エラーはデバッグ実行時のみ発生しているのでしょうか?回答よろしくお願い致します。

  • C++Builder Ver6.0でエラーが発生

    Windows XP のAdminiでC++Builderをインストール した後、guestでログインしてC++Builder Ver6.0 を起動させ、実行させた場合は ”c++致命的エラー Project1.cpp(35):F1013 出力ファイルの書き込みエラー” というエラーが発生します。 原因は何でしょうか? 出力先のパスの指定を書き換えないとだめなのでしょうか?

  • VB.netの初学者なんですが、

    VB.netの初学者なんですが、 VB.netが詳しい方、是非お願いいたします。 visual studio2008で、以前のVB.net(2003)のプログラムをコンパイルしてますが、 フォルダ名(abc.net)配下にいくつのプロジェクトがあります、main,ttt,ccc.exeのプロジェクトがありますが、abcってのプロジェクトがありません。 普通にコンパイル通れば、main.exe,ttt.exe,ccc.exeなどの実行モジュールが生成されて、デバッグ実行すれば、...\abc.net\obj\Debug\配下にmain.exe,main.pdb,ttt.exe,ttt.pdb,ccc.exe,ccc.pdbなどのファイルを生成できました。 以前の方は...\abc.net\obj\Debug\abc.exe,とabc.pdbの二つファイルを生成していました。私はすべてのプロジェクトをコンパイルして、デバッグ実行させて、その二つファイル(abc.exe,abc.pdb)の更新 日付は変わらず、以前の日付になっています。 どうすれば、abc.exeっていう実行モジュールが生成できますか。 それは現有のプロジェクト(main,ttt,ccc)中の1つプロジェクトにより、生成したと考えていますが、 どのファイル(拡張子)を見ると、どのプロジェクトより生成したことを分かりますか。 少し長いですが、よろしくお願いいたします。

  • アプリケーションエラー

    EAccessViolationがモジュールvbscript.dllの0001e3cbで発生しました。 モジュールvbscript.dllのアドレス7326E3CBでアドレス00000000に対する書き込み違反がおきました。 実際に起きたエラーを書き抜いたんですが、対処法とかってあるんでしょうか? 非常に困ってます。

  • word 2010でコンパイルエラー

     word 2010でコンパイルエラーが発生します。ヘルプには次のメッセージが出ます。対処方法教えてください。 非表示モジュール <モジュール名> 内でコンパイルエラーが発生しました。 アプリケーション情報 保護されているモジュールにコンパイル エラーがあります。このエラーは、保護されているモジュール内にあるため、表示できません。 このエラーは一般に、実行中のアプリケーションのバージョンまたはアーキテクチャにコードが対応していない場合に発生します (32 ビット版の Microsoft Office アプリケーションを対象としているドキュメント内のコードを 64 ビット版の Office で実行しようとした場合など)。 このエラーの原因と解決方法は次のとおりです。 エラーの原因: このエラーは、VBA コード中の保護されている (非表示) モジュール内にコンパイル エラーがある場合に発生します。該当モジュールが保護されているため、問題となっているコンパイル エラー自体は明示されません。 解決策: ドキュメントまたはプロジェクト内の VBA コードにアクセスできる場合は、該当するモジュールの保護を解除してコードを再実行し、問題となっているエラーを確認します。 ドキュメント内の VBA コードにアクセスできない場合は、ドキュメントの作成者に問い合わせ、非表示モジュール内のコードを更新するように依頼してください。