C版严蔚敏数据结构动态存储管理解答

需积分: 9 1 下载量 4 浏览量 更新于2024-10-17 收藏 26KB DOC 举报
"严蔚敏数据结构(C版)第八章主要讲解了动态存储管理,包括遵循最后分配者最先释放规则的内存分配算法和相应的释放算法,以及边界标识法的动态存储管理系统中的空闲块回收方法。" 在数据结构的学习中,动态存储管理是至关重要的一个部分,它涉及到如何有效地分配和释放内存空间,以满足程序运行时的需求。严蔚敏的《数据结构》一书,由清华大学出版社出版,提供了C语言实现的数据结构相关知识,包括本章涉及的动态存储管理。 8.11 部分介绍了一个名为 Malloc_Fdlf 的内存分配函数,该函数遵循“最后分配者最先释放”(First-Degree Last-Fit, FDLF) 的原则。这个算法的主要思路是从一个按大小降序排列的栈 S 中查找足够大的空闲块,如果找不到,则将这些不满足条件的块移到栈 T 中,然后继续在栈 S 中寻找。当找到足够大的空闲块时,将其分割,并将剩余部分重新推入栈 S。如果栈 S 最终为空,表示没有足够大的空闲块,函数返回 NULL。 8.12 部分给出了 Free_Fdlf,这是一个与 Malloc_Fdlf 相对应的内存释放函数。它通过遍历按地址排序的栈,寻找合适的位置插入释放的内存块,并尝试与相邻的空闲块进行合并,以减少内存碎片。如果释放的内存块与栈 T 中的上邻块或下邻块相邻,那么可以将它们合并成一个更大的空闲块,然后将更新后的块推入栈 S,最后恢复栈 S 和栈 T 的原始顺序。 8.13 部分讨论的是在边界标识法的动态存储管理系统中回收空闲块的方法。边界标识法是一种管理内存的方法,其中每个块的边界都有一个标签来标记其状态。函数 Free_BT 接收两个参数 pav 和 p,分别表示当前块和要回收的空闲块。它检查空闲块 p 是否能与其前后相邻的块合并,如果可以,就进行合并操作,然后更新相应的边界标签。 这些算法和方法是数据结构中动态存储管理的基础,对于理解和实现高效的内存管理系统至关重要。在实际编程中,尤其是在系统级编程和资源有限的嵌入式系统中,对内存的有效管理能够极大地提升程序的性能和稳定性。