0

我声明二维动态数组。运行程序时显示此错误: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 < lenAj和 也是如此lenB。此外,第二个循环并没有真正的意义。你的意思是lenB代替lenA吗?

于 2013-03-02T12:07:58.030 回答
0

你混淆了 lenA 和 lenB 。它应该是:

SWArray[i][0] 和 SWArray[0][j] 在你的循环中。

你的循环应该使用 < 而不是 <=

于 2013-03-02T12:14:42.437 回答
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 回答