在struct-c中动态分配数组

时间:2013-12-14 21:49:38

标签: c memory dynamic allocation

尝试从csv文件动态分配数据。我试图创建一个包含2d数组的结构数组。问题是我在尝试为结构内部的数组分配内存时遇到访问冲突。带注释的标记问题区域。任何帮助表示赞赏。

 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 个答案:

答案 0 :(得分:0)

以下这一行:

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

应为:

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

同样替换它:

AllCurrentData[newLineCount]->data

用这个:

AllCurrentData[newLineCount].data

原因:您typedef编辑CurrentData是指向struct current的指针,您可以直接将AllCurrentData分配为struct current的数组。< / p>