【发布时间】:2014-11-23 02:25:38
【问题描述】:
我只在下一个while需要时才尝试分配内存。
char *str = malloc(sizeof(char));
int i = 0;
while(something == true){
str[i] = fgetc(fp);
str = realloc(str, strlen(str)+1);
i++;
}
free(str);
但由于某种原因,上面的代码在 strlen() 处给了我一个 "Invalid read of size 1"。
【问题讨论】:
-
str不是0-终止的,因此strlen(str)是未定义的行为。试试realloc(str, i+2);。 -
效率不高。您是否有上限或可能以 1k 为单位重新分配?还要避免重复使用 strlen
-
与
i+2合作。谢谢!