Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
383 views
in Technique[技术] by (71.8m points)

c - Does reassigning a malloc'd string cause memory leak?

I have this small function that read words from a file:

bool load(const char *dictionary)
{
    FILE *fp = fopen(dictionary,"r");
    //defined LENGTH = 45;
    char *word = malloc(LENGTH + 1);
   
    while(fscanf(fp,"%s[
]",word) != EOF)
    {
        //do ... thing in here
    }

    free(word);
    return true;
}

Will fscanf cause memory leak by continuously reassigning word?

question from:https://stackoverflow.com/questions/65914623/does-reassigning-a-mallocd-string-cause-memory-leak

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

No, this will not cause a memory leak in the way you suggest. fscanf does not reassign word, but rather modifies its contents. You may wish to think of it in terms of: fscanf doesn't change word, but does change word[0], word[1], etc.

After a call to fscanf, word will still point to the same location in memory (i.e. whatever you got from malloc), but the data at that location will be different.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...