我有一个从文件中读取单词的小函数:
bool load(const char *dictionary)
{
FILE *fp = fopen(dictionary,"r");
//defined LENGTH = 45;
char *word = malloc(LENGTH + 1);
while(fscanf(fp,"%s[\n]",word) != EOF)
{
//do ... thing in here
}
free(word);
return true;
}
不断重新分配fscanf
会导致word
内存泄漏吗?
答案 0 :(得分:2)
不,这不会像您建议的那样导致内存泄漏。 fscanf
不会重新分配 word
,而是修改其内容。您可能希望从以下方面考虑:fscanf
不会改变 word
,但会改变 word[0]
、word[1]
等
调用 fscanf
后,word
仍将指向内存中相同的位置(即您从 malloc
获得的任何内容),但数据在那个位置会有所不同。