zoukankan      html  css  js  c++  java
  • 单链表的释放内存free(delete)的顺序

    在单链表中我们在程序的最后加上一个释放内存的方法或者操作,这是一个很好的习惯。

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

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

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

    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;
    }
  • 相关阅读:
    2月3日
    照片测试
    家属签证计时
    我来了
    090204 阴天
    重要提醒to 小爱
    小毛小毛
    C++Primer学习日程
    资料库字段存储文件记录的方式
    本日有点忙
  • 原文地址:https://www.cnblogs.com/daoluanxiaozi/p/2191578.html
Copyright © 2011-2022 走看看