首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问free函数的作用

2013-10-01 
请教free函数的作用我看c primer的书里,有这么个结构struct film{char title[TSIZE]int ratingstruct fi

请教free函数的作用
我看c primer的书里,有这么个结构
struct film{
    char title[TSIZE];
    int rating;
    struct film * next;
}
下面的current, head都是这个结构的指针。
在清理列表的时候
current = head;
while(current != NULL)
{
    free(current);
    current = current->next;
}
这里我理解的是,free()已经释放了current指向内存,可是,为什么current->next还是可以指向这个指针成员?
[解决办法]
操作系统肯定要这样做,一个效率高,一个也没必要
不过程序员free后,是应该吧指针设置为NULL的,才是标准的,不然就是野指针了。
[解决办法]
释放的是当前的地址,它的next地址还是有效的
这是链表删除的基本操作吧!
分配的内存谁分配谁释放,每分配一次,都必须对应释放一次的!

[解决办法]

free(current);
//要求在此没有别的线程或进程修改current->next的值
current = current->next;

热点排行