0

2D動的配列を宣言します。プログラムを実行すると、このエラーが表示されます:SW-Serial.exeの0x012219c4で未処理の例外:0xC0000005:アクセス違反の書き込み場所0xabababab。

エラーが発生した私のプログラムの部分:

    double** SWArray;  
SWArray = (double**) malloc(lenA*sizeof(double*));  
for (int i = 0; i <= lenA; i++)  
    SWArray[i] = (double*) malloc(lenB*sizeof(double));  

for(int i=0;i<=lenA;i++){
    SWArray[0][i]=0;
}
for(int j=0;j<=lenB;j++){
    SWArray[j][0]=0;
}

この問題の写真

4

3 に答える 3

3

配列はCの0から始まります。あなたが言うところはどこでもそうi <= lenAあるべきですi < lenA。同じことがとにjも当てはまりますlenB。また、2番目のループは実際には意味がありません。lenBの代わりに意味しましたlenAか?

于 2013-03-02T12:07:58.030 に答える
0

両方のループが間違った次元でインデックスを作成しており、メモリが割り当てられているサイズを超える要素にもアクセスしています。両方のループでに変更する必要がi<=ありますi<

正しい方法は次のとおりです。

for(int i=0;i<lenA;i++){
    SWArray[i][0]=0;
}
for(int j=0;j<lenB;j++){
    SWArray[0][j]=0;
}
于 2013-03-02T12:10:05.090 に答える
0

lenAとlenBが混同されています。そのはず:

ループ内のSWArray[i][0]およびSWArray[0][j]。

そして、ループは<ではなく<を使用する必要があります<=

于 2013-03-02T12:14:42.437 に答える