尝试动态分配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++;
            }
        }
    }
}

最佳答案

下面这一行:

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

应为:
CurrentData AllCurrentData = malloc(NUM_ITEMS * sizeof(*CurrentData));

同时替换为:
AllCurrentData[newLineCount]->data

有了这个:
AllCurrentData[newLineCount].data

原因:您已经将typedefedCurrentData作为指向struct current的指针,并且可以直接将AllCurrentData分配为struct current的数组。

10-04 21:08