动态内存分配算法实验报告材料.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案 精彩文档 动 态 内 存 分 配 算 法 实 验 报 告 院系:计算机与通信工程学院 班级:计科08-1班 姓名:胡太祥 学号:200807010112 一.实验题目:动态内存分配算法 二、实验目的 深入了解动态分区存储管理方式内存分配与回收的实现 三、实验要求 熟悉存储管理中动态分区的管理方式及Windows环境下,VC++程序设计方法 四、实验内容 1,确定定内存空闲分配表和进程内存分配表 2,采用首次适应算法完成内存空间的分配 3,采用最佳适应算法完成内存空间的分配 4,采用最坏适应算法完成内存空间的分配 5,实现内存回收功能 五、实验结果 首次适应算法结果 最佳适应算法 最坏适应算法 六、实验总结 首次适应算法:从表头指针开始查找课利用空间表,将找到的第一个大小不小于“请求”的空闲块的一部分分配给用户。 最佳适应算法:将可利用空间表中一个大小不小于“请求”且最接近“请求”的空闲块的一部分分配给用户。 最坏适应算法:将可利用空间表中一个大小不小于“请求”且是链表中最大的空闲块的一部分分配给用户。 以上是动态内存分配的三种算法思想,算法采用数据结构中的双向链表实现。 附录(算法代码): 实用标准文案 精彩文档 #includeiostream.h #includestdlib.h #define Free 0 //空闲状态 #define Used 1 //已用状态 #define OK 1 //完成 #define ERROR 0 //出错 #define MAX_length 32767 //最大内存空间为32767KB typedef int Status; //typedef将标识符Status定义成一个数据型标识符 int n = 0; typedef struct freearea { //定义一个结构体freearea,并对这个空闲分区进行说明 int ID; //分区号 long size; //分区大小 long address; //分区地址 int state; //当前状态 } ElemType; typedef struct DuLNode { //double linked list // 线性表的双向链表存储结构 ElemType data; struct DuLNode *prior; //前趋指针 struct DuLNode *next; //后继指针 } DuLNode, *DuLinkList; DuLinkList free_list; //空闲链表 DuLinkList alloc_list; //已分配链表 Status alloc(int);//内存分配 void free_memory(int ID, int method); //内存回收 Status first_fit(int ID, int size); //首次适应算法 Status best_fit(int ID, int size); //最佳适应算法 Status worst_fit(int ID, int size); //最坏适应算法 void first_fit_insert(DuLNode *insert); //首次适应插入排序 void best_fit_insert(DuLNode *insert); //最佳适应插入排序 void worst_fit_insert(DuLNode *insert); //最坏适应插入排序 DuLNode *independent_node(DuLNode *node); //断开节点node与相邻节点的联系,使其孤立 //将节点node分割,返回分配的节点信息,node为剩余内存信息 //node为双指针形式,因为可能需要对node的值进行修改 DuLNode *slice_node(DuLNode **node, int ID, int size); void show();//查看分配 Status Initblock();//开创空间表 Status Initblock()//开创带头节点的内存空间链表,头节点不用 { alloc_list = (DuLinkList)malloc(sizeof(DuLNode)); free_list = (DuLinkList)malloc(sizeof(DuLNode)); //

文档评论(0)

dmz158 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档