2013-05-06 106 views
-1

我宣稱HTwoDimArray函數爲2D動態數組。當線(標記爲**)執行時,編譯器顯示誤差:

Access violation writing location 0x61d1e5bc.訪問衝突寫入位置0x61d1e5bc

小海倫& 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; 
} 
+3

**編譯器**顯示錯誤? – trojanfoe 2013-05-06 18:49:47

+0

'H'在哪裏?給我們看一看。 – 2013-05-06 18:50:28

+1

這不是C++ – yngccc 2013-05-06 18:51:14

回答

6

100030 X 100030陣列的32位整數需要RAM 40GB。你的程序是否可以訪問這麼多的內存?

很有可能第二個malloc失敗。但是,您的代碼無視失敗並繼續進行。

+0

你說得對。謝謝。 – 2013-05-06 19:08:44