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

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

ID:55688288

大小:821.00 KB

页数:15页

时间:2020-05-24

动态内存分配算法实验报告.doc_第1页
动态内存分配算法实验报告.doc_第2页
动态内存分配算法实验报告.doc_第3页
动态内存分配算法实验报告.doc_第4页
动态内存分配算法实验报告.doc_第5页
资源描述:

《动态内存分配算法实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、动态内存分配算法实验报告院系:计算机与通信工程学院班级:计科08-1班姓名:胡太祥学号:2一.实验题目:动态内存分配算法二、实验目的深入了解动态分区存储管理方式内存分配与回收的实现三、实验要求熟悉存储管理中动态分区的管理方式及Windows环境下,VC++程序设计方法四、实验内容1,确定定内存空闲分配表和进程内存分配表2,采用首次适应算法完成内存空间的分配3,采用最佳适应算法完成内存空间的分配4,采用最坏适应算法完成内存空间的分配5,实现内存回收功能五、实验结果首次适应算法结果最佳适应算法最坏适应算法六、实验总结首次适应算法:从表头指针开始查找课利用

2、空间表,将找到的第一个大小不小于“请求”的空闲块的一部分分配给用户。最佳适应算法:将可利用空间表中一个大小不小于“请求”且最接近“请求”的空闲块的一部分分配给用户。最坏适应算法:将可利用空间表中一个大小不小于“请求”且是链表中最大的空闲块的一部分分配给用户。以上是动态内存分配的三种算法思想,算法采用数据结构中的双向链表实现。附录(算法代码):#include#include#defineFree0//空闲状态#defineUsed1//已用状态#defineOK1//完成#defineERROR0//出错#

3、defineMAX_length32767//最大内存空间为32767KBtypedefintStatus;//typedef将标识符Status定义成一个数据型标识符intn=0;typedefstructfreearea{//定义一个结构体freearea,并对这个空闲分区进行说明intID;//分区号longsize;//分区大小longaddress;//分区地址intstate;//当前状态}ElemType;typedefstructDuLNode{//doublelinkedlist//线性表的双向链表存储结构ElemTypedata;

4、structDuLNode*prior;//前趋指针structDuLNode*next;//后继指针}DuLNode,*DuLinkList;DuLinkListfree_list;//空闲链表DuLinkListalloc_list;//已分配链表Statusalloc(int);//内存分配voidfree_memory(intID,intmethod);//内存回收Statusfirst_fit(intID,intsize);//首次适应算法Statusbest_fit(intID,intsize);//最佳适应算法Statusworst_f

5、it(intID,intsize);//最坏适应算法voidfirst_fit_insert(DuLNode*insert);//首次适应插入排序voidbest_fit_insert(DuLNode*insert);//最佳适应插入排序voidworst_fit_insert(DuLNode*insert);//最坏适应插入排序DuLNode*independent_node(DuLNode*node);//断开节点node与相邻节点的联系,使其孤立//将节点node分割,返回分配的节点信息,node为剩余内存信息//node为双指针形式,因为可能

6、需要对node的值进行修改DuLNode*slice_node(DuLNode**node,intID,intsize);voidshow();//查看分配StatusInitblock();//开创空间表StatusInitblock()//开创带头节点的内存空间链表,头节点不用{alloc_list=(DuLinkList)malloc(sizeof(DuLNode));free_list=(DuLinkList)malloc(sizeof(DuLNode));//头节点不用alloc_list->prior=alloc_list->next=N

7、ULL;free_list->prior=free_list->next=NULL;//空闲列表初始为整个内存大小,放到node节点中DuLNode*node=(DuLNode*)malloc(sizeof(DuLNode));node->data.address=0;node->data.size=MAX_length;node->data.ID=0;node->data.state=Free;//将node节点放到空闲链表中node->prior=free_list;node->next=NULL;free_list->next=node;ret

8、urnOK;}//将所插入节点按首址从小到大顺序插入到空闲链表中voidfirst_fit_insert(D

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。