みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

for文内の計算時に出るエラーについて

配列に格納している値を使って計算するプログラムを作成しているのですが、以下のエラーが出てプログラムを実行していくことができません。2次元配列に格納している値をfor文を回して加算するプログラムになっています。プログラム・エラーメッセージと以下に載せていますので、解決策・改善策がお分かりになる方はぜひ教えていただきたいと思います。よろしくお願い致します。
使っているソフトはVisual Studio2010(Visual C++)のWindowsFormアプリケーションです。

プログラム:
for(j=1;j<=768;j++){
for(i=1;i<=10;i++){
a[i][j].num+=b[i][j].num
}
}

エラー内容:
ランタイムの重大なエラーが発生しました。エラーのアドレスは 0x690c169f、スレッド 0x19e4 です。エラー コードは 0xc0000005 です。これは CLR のバグであるか、またはユーザー コードのアンセーフまたは確認不可能な部分にバグがある可能性があります。このバグの一般的な原因には、スタックが壊れる可能性のある COM-interop または PInvoke のユーザー マーシャリング エラーが含まれています。

投稿日時 - 2012-10-23 16:21:31

QNo.7762518

すぐに回答ほしいです

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

添え字の範囲が越えちゃってるんじゃないの?

投稿日時 - 2012-10-23 16:37:37

お礼

回答ありがとうございました。

ご指摘の通りでした。

プログラムを上書きしながら作成していて、配列aの宣言の部分を更新していないことが原因でした。

投稿日時 - 2012-10-23 16:52:10

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

「0xc0000005」で検索しましたか?

メモリアクセス違反です

要は、i又はjまたはa構造体のnumの何れかに於いて、溢れが発生している

投稿日時 - 2012-10-23 16:45:43

お礼

回答ありがとうございました!

aで宣言している値を超えていたのが、原因でした。

プログラムを上書きしながら作成していて、宣言の値を更新していない確認ミスでした。

投稿日時 - 2012-10-23 16:56:40

ANo.3

Wr5

配列の添え字は0から…かと思いますが……

>for(j=1;j<=768;j++){
> for(i=1;i<=10;i++){
>  a[i][j].num+=b[i][j].num
> }
>}

i,jともに1からになっているのは想定通りですか?

また、a[][]とb[][]はどのように作成されていますか?
a[10][768]、b[10][768]だったら吹っ飛びますよ。
a[11][769]、b[11][769]ならOKですが。

投稿日時 - 2012-10-23 16:44:23

お礼

回答ありがとうございました!

単純に1からの方がわかりやすいかと思い、0は使用しないようにしていました。

ただ、aで宣言している値を計算時に超えていたのが、原因でした。

プログラムを上書きしながら作成していて、宣言の値を更新していない確認ミスでした。

投稿日時 - 2012-10-23 16:56:01

ANo.2

aとbの宣言はどうなってます?
ちなみに、配列の添字は0始まりです。

投稿日時 - 2012-10-23 16:40:21

お礼

回答ありがとうございました!

aで宣言している値を超えていたのが、原因でした。

プログラムを上書きしながら作成していて、宣言の値を更新していない確認ミスでした。

投稿日時 - 2012-10-23 16:50:10

あなたにオススメの質問