课本源码部分
第8章 动态存储管理 - 无用单元收集
——《数据结构》-严蔚敏.吴伟民版
源码使用说明 链接☛☛☛
课本源码合辑 链接☛☛☛
习题集全解析 链接☛☛☛
本源码引入的文件 链接☛ 、
文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲08 动态存储管理\03 GarbageCollection
概述
“无用单元”是指那些用户不再使用而系统没有回收的结构和变量。无用单元的累积会造成系统卡顿,程序运行内存不足等问题,所以必须加以监控回收。
解析
以一个广义表表示的内存结构为例,回收内存有两条途径:
(1)使用访问计数器。在所有子表或广义表上增加一个表头结点,并设立一个“计数域”,它的值为指向该子表或广义表的指针数目。只有当该计数域的值为零时,此子表或广义表中结点才被释放。
(2)收集无用单元。在程序运行中,对所有的链表结点,不管它是否有用,都不回收,直到整个可利用空间表为空。此时才暂时中断执行程序,将所有当前不被使用的结点链接在一起,成为一个新的可利用空间表,而后程序继续执行。
源码
文件一 ☛ GarbageCollection.h
文件二 ☛ GarbageCollection.c
文件三 ☛ GarbageCollection-main.c (测试文档)
测试结果展示