问题描述
我可能只是愚蠢:
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;
}
}
这是在我添加 NULL 检查并在 free() 之后显式设置 fref 为 NULL 之后。
Xcode 12.3。原始代码 here。
如果这是一个误报,有没有办法让它静音?
编辑:gli_filereflist 是一个链表,当第一个项目被销毁时,它将指向列表中的下一个项目。
解决方法
这有效:
while (gli_filereflist)
{
fref = gli_filereflist;
gli_filereflist = gli_filereflist->next;
glk_fileref_destroy(fref);
}