您的位置:首页 > 其它

单链表的释放内存free(delete)的顺序

2011-09-26 12:56 162 查看
在单链表中我们在程序的最后加上一个释放内存的方法或者操作,这是一个很好的习惯。

但是在销毁过程当中,我遇到了一个问题,那就是释放的顺序应该是怎么样的,刚开始的时候我很思维习惯的用“数据输出”的方法,顺序的将内存释放了,但是出现了内存错误(泄露),百思不其解。

后来发现,原来是释放的顺序搞反了,如果顺序释放的话,释放了第一个节点,其后的节点都丢失了,因为其后的节点都是通过头结点来寻找的。

下面附上做实验时候的内存释放代码:如果有不对的地方,请大家纠正

void Destroy(AddressBook &ab)
{
Student * temp;
Student * del;
del = ab.first->next;
temp = ab.first ->next->next;
while(temp)
{
free(del);
del = temp;
temp = temp->next;
}
free(del);
free(ab.first);
ab.length = 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐