【发布时间】:2015-04-09 06:09:58
【问题描述】:
我编写了以下程序来从文件中读取字符串并将它们存储到数组中,这些数组在结构中具有固定的列数和可变的行数。
FILE *fp;
typedef struct {
char (*date)[12],
(*content)[50],
(*amount)[10];
} list;
list in;
int i,lines;
fp = fopen("book.txt","r");
lines = 100;
in.date = malloc(lines * 12 * sizeof(char));
in.content = malloc(lines * 50 * sizeof(char));
in.amount = malloc(lines *10* sizeof(char ));
printf("%-12s%-40s%-10s\n","Date","Content","Amount");
for(i = 0;i <lines;i++){
fscanf(fp,"%s\t%[a-z|A-Z| ]\t%s\n",in.date[i],in.content[i],in.amount[i]);
printf("%-12s%-40s%-10s%\n",in.date[i],in.content[i],in.amount[i]);
}
我可以为行分配内存,但是当释放内存时程序将停止工作,如下所示:
for(i = 0;i < lines;i++){
free(in.date[i]);
free(in.content[i]);
free(in.amount[i]);
}
如何正确地将它们从内存中释放出来?
【问题讨论】:
-
如果你分配
in.date,为什么要释放in.date[i]?
标签: c arrays pointers memory memory-management