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
2.1k views
in Technique[技术] by (71.8m points)

c - Why does Clang static analyzer think that this is use-after-free?

I'm probably just stupid:

    fileref_t *fref;

    while (gli_filereflist != NULL)
    {
        fref = gli_filereflist;
        if (fref != NULL)
        {
            glk_fileref_destroy(fref);   <-------- Use of memory after it is freed
            fref = NULL;
        }
    }

This is after I added the NULL check and explicitly set fref to NULL after free().

Xcode 12.3. Original code here.

If this is a false positive, is there a way to silence it?

EDIT: gli_filereflist is a linked list, which will point to the next item in the list when the first one is destroyed.


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

1 Reply

0 votes
by (71.8m points)
等待大神解答

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

...