- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
严蔚敏 数据结构集c语言版答桉第八章 动态存储管理
第八章 动态存储管理
8.11
typedef struct {?????????? ?????? char *start; ???????????????? int size; ????????????? } fmblock; //空闲块类型
char *Malloc_Fdlf(int n)//遵循最后分配者最先释放规则的内存分配算法{??while(Gettop(S,b)b.sizen)??{????Pop(S,b);????Push(T,b); //从栈顶逐个取出空闲块进行比较??}??if(StackEmpty(S)) return NULL; //没有大小足够的空闲块??Pop(S,b);??b.size-=n;??if(b.size) Push(S,{b.start+n,b.size});//分割空闲块??while(!StackEmpty(T))??{????Pop(T,a);????Push(S,a);??} //恢复原来次序??return b.start;}//Malloc_Fdlf
mem_init()//初始化过程{??...??InitStack(S);InitStack(T); //S和T的元素都是fmblock类型??Push(S,{MemStart,MemLen}); //一开始,栈中只有一个内存整块??...}//main
8.12
void Free_Fdlf(char *addr,int n)//与上一题对应的释放算法{??while(Gettop(S,b)b.startaddr)??{????Pop(S,b);????Push(T,b);??} //在按地址排序的栈中找到合适的插入位置??if(Gettop(T,b)(b.start+b.size==addr)) //可以与上邻块合并??{????Pop(T,b);????addr=b.start;n+=b.size;??}??if(Gettop(S,b)(addr+n==b.start)) //可以与下邻块合并??{????Pop(S,b);????n+=b.size;??}??Push(S,{addr,n}); //插入到空闲块栈中??while(!StackEmpty(T))??{????Pop(T,b);????Push(S,b);??} //恢复原来次序}//Free_Fdlf
8.13
void Free_BT(Space pav,Space p)//在边界标识法的动态存储管理系统中回收空闲块p{??n=p-size;??f=p+n-1; //f指向空闲块底部??if((p-1)-tag(f+1)-tag) //回收块上下邻块均为占用块??{????p-tag=0;f-tag=0;????f-uplink=p;????if(!pav)????{??????p-llink=p;??????p-rlink=p;????}????else????{??????q=pav-llink;??????p-llink=q;p-rlink=pav;??????q-rlink=p;pav-llink=p;????}????pav=p;??}//if??else if(!(p-1)-tag(f+1)-tag) //上邻块为空闲块??{????q=(p-1)-uplink;????q-size+=n;????f-uplink=q;????f-tag=0;??}??else if((p-1)-tag!(f+1)-tag) //下邻块为空闲块??{????q=f+1;????s=q-llink;t=q-rlink;????p-llink=s;p-rlink=t;????s-rlink=p;t-llink=p;????p-size+=q-size;????(q+q-size-1)-uplink=p;????p-tag=0;??}??else //上下邻块均为空闲块??{????s=(p-1)-uplink;????t=f+1;????s-size+=n+t-size;????t-llink-rlink=t-rlink;????t-rlink-llink=t-llink;????(t+t-size-1)-uplink=s;??}}//Free_BT,该算法在课本里有详细的描述.
8.14
void Free_BS(freelist avail,char *addr,int n)//伙伴系统的空闲块回收算法{??buddy=ad
您可能关注的文档
- 业务接单排产作业程相关支持表单.doc
- 业务流程再造过程的组织结构的调整.docx
- 业务员教材专题六定目标成为专业的销售人员.doc
- 业务部门管理制度总(阳光版).doc
- 业房地产XX商业场整合策划方案.doc
- 业界几大前装车联解决方案描述及对比.docx
- 业科技公司人事管制度(2010年4月版).doc
- 东乌旗食品药品监经验交流材料.doc
- 东乡族小学生汉语学习困难与教学对策研究.doc
- 东乡花儿及其当代义的思考草稿.doc
- 2025年线上职业技能认证平台内容生态构建研究.docx
- 2025年封开县事业单位真题.docx
- 2025年线上职业技能认证平台可持续发展战略规划.docx
- 2025年城市垃圾填埋场封场治理项目环境影响社会稳定风险评估报告.docx
- 2025年天津润海水利管理有限公司招聘考试笔试试卷[附答案] .pdf
- 2025年城市垃圾填埋场封场治理项目社会稳定性评估与风险防范对策.docx
- 2025年城市垃圾填埋场封场治理项目社会稳定性风险评估与优化策略.docx
- 精品解析:2025年浙江省中考历史真题(解析版).docx
- 2025年城市垃圾填埋场封场治理项目社会稳定性风险评估与治理体系创新报告.docx
- 2025年娄底市娄星区事业单位真题 .pdf
文档评论(0)