重新分配 malloc 的字符串会导致内存泄漏吗?

时间:2021-01-27 07:28:57

标签: c memory-leaks malloc

我有一个从文件中读取单词的小函数:

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内存泄漏吗?

1 个答案:

答案 0 :(得分:2)

不,这不会像您建议的那样导致内存泄漏。 fscanf 不会重新分配 word,而是修改其内容。您可能希望从以下方面考虑:fscanf 不会改变 word,但会改变 word[0]word[1]

调用 fscanf 后,word 仍将指向内存中相同的位置(即您从 malloc 获得的任何内容),但数据在那个位置会有所不同。