访问冲突写入位置0x61d1e5bc

时间:2013-05-06 18:48:15

标签: c

我从H函数声明TwoDimArray为2D动态数组。当行(标记为**)执行时,编译器显示错误:

Access violation writing location 0x61d1e5bc.

小lenA& lenB值(如250),没有任何问题!

int lenA=100030;
int lenB=100030;
int **H;

int TwoDimArray(int ***x,int nRow,int nCol)
{
    int i;
    *x=(int **)malloc(nRow*sizeof(int *));
    if(*x==NULL)
        return 1;
    (*x)[0]=(int *)malloc(nCol*nRow*sizeof(int));
    if((*x)[0]==NULL)
        return 2;
    for(i=1;i<nRow;i++)
        (*x)[i]=(*x)[i-1]+nCol;
    return 0;
}

    TwoDimArray(&H, lenB, lenA);

    for(int j=0;j<lenA;j++){
       H[0][j]=0;
    }

**  for(int i=0;i<lenB;i++){
       H[i][0]=0;
}

1 个答案:

答案 0 :(得分:6)

一个32位整数的100030 x 100030数组需要40GB的RAM。您的流程是否可以访问这么多内存?

很可能第二个malloc失败了。但是,您的代码会忽略失败并继续执行。

相关问题