[英]Dynamically allocate array in struct - c
尝试从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
版CurrentData
是一个指针struct current
,你可以直接分配AllCurrentData
作为阵列struct current
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.