尝试动态分配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
原因:您已经将
typedef
edCurrentData
作为指向struct current
的指针,并且可以直接将AllCurrentData
分配为struct current
的数组。