• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の配列について)

C言語の配列についてエラーが発生する理由について

このQ&Aのポイント
  • C言語の配列に関連するプログラムでエラーが発生しています。具体的には、特定の条件でアクセス違反が発生しています。
  • プログラムの実行中に、2tika06.exe の例外が発生しました。エラーコードは 0xC0000005 です。
  • エラー原因として考えられるのは、配列のアクセスが有効範囲外になっている可能性や、ポインタの不正な利用によるものです。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

となると ・short型の数値を、「アドレス」として doubleへのポインタ aに代入してしまっている。 その「アドレス」がアクセス不能な領域を示していて、 *a でアクセスしようとしてエラーになる。 というのが一番可能性が高そうです。 ただ、解決策となると、何を意図してこんな書き方しているか、がわからないから答えようがありません。 プログラム全体を示してください。 この3行が「連続する3行」だとしたら、それ自体が変ですし。

mitti0157
質問者

お礼

2回もありがとうございます。 ご指摘いただいて気づいたのですが、ポインタの使い方を根本的に間違えていました。 これから質問するときはプログラム全体を示したいと思います。 ありがとうございました。

その他の回答 (4)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

エラーが出るところでdst_img->width * dst_imt->heightとdst_img->width * jj + iiの値を比較してみましょう。エラーそのものはその辺でしょうから。 ただ、既に指摘されてるようにC++は型チェックが厳密になったので最低でも警告は出てるはずなんですが…… 本当に何も出ていないなら、コンパイルオプションで警告抑制をしている可能性があります。

mitti0157
質問者

お礼

警告がでていました。 エラーの原因はポインタの使い方にありました。 初歩的なミスです。 これからは警告にも注意を払います。 回答ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

そもそも C じゃないよね, これ. で C++ なら #1 で言われているようにそもそもエラーになるんじゃないかな.

mitti0157
質問者

お礼

すみません、C++です。間違えました。 なぜかエラーはでず、コンパイルできてしまいました。 只今実装できる環境がないので、また月曜日になおしてみようと思います。 回答ありがとうございます。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

その部分でエラーが起きているという根拠は? それから、部分的なコードを見せられても困ります。 全体を見せてください。

mitti0157
質問者

お礼

デバックしてみてエラー文が発生したのが上記の2行目の箇所だったのではらせて頂きました。 また、その行をつけ加えるまではエラー文は発生しなかったもので…。 とりあえず下記で指摘頂いた点をなおしてみます。 それでわからなかったらもう一度全体を貼り付けたいと思います。 ありがとうございました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> double *a = dst_buf[dst_img->width * jj + ii]; これ、コンパイルエラー出ませんでしたか? doubleのポインタである a と short型の dst_buf[dst_img->width * jj + ii] とでは型がまったく違うのですが。

mitti0157
質問者

お礼

訂正ですがC++です。 VC++でコンパイルしましたがコンパイルエラーはなく通ってしまいました。 型が悪かったんですね。 勉強してもう一度組んでみます。 ありがとうございます。

関連するQ&A