2013-12-14 95 views
1

嘗試從csv文件動態分配數據。我正在試圖製作一個數組結構,其中包含2維數組。問題是當我嘗試爲結構中的數組分配內存時,我得到訪問衝突。用評論標記問題區域。任何幫助表示讚賞。在結構中動態分配數組-c

typedef struct current{ 

    char **data; 

}*CurrentData; 

CurrentData getData(FILE *current){ 

CurrentData *AllCurrentData = malloc(NUM_ITEMS * sizeof(CurrentData)); 

    /*allocate struct data memory, skipping the first line of data*/ 
    while ((ch = fgetc(current)) != EOF){ 
     if (firstNewLine == 0){ 
      firstNewLine++; 
     } 
     if (firstNewLine > 0){ 
      if (ch == '\n'){ 
       AllCurrentData[newLineCount]->data = malloc(COLUMNS * sizeof(char)); //problem here// 
       newLineCount++; 
      } 
     } 
    } 
} 
+1

newLineCount在哪裏初始化爲0? – OldProgrammer

+1

@OrProgrammer沒有主要的,所以我認爲他只是顯示了「重要」的代碼。 – Radnyx

回答

0

這下面一行:

CurrentData *AllCurrentData = malloc(NUM_ITEMS * sizeof(CurrentData)); 

應爲:

CurrentData AllCurrentData = malloc(NUM_ITEMS * sizeof(*CurrentData)); 

而且替換此:

AllCurrentData[newLineCount]->data 

與此:

AllCurrentData[newLineCount].data 

原因:你有typedefCurrentData是一個指針struct current,你可以直接分配AllCurrentData作爲struct current數組。

+0

謝謝問題解決了,指針仍然讓我困惑。 – TinMan