📄 memmenage.cpp
字号:
/*////////////////
////////////////*/
#include "memmenage.h"
//注释其中一个使用另一个方案分配内存
//#include "firstfit.h"
//#include "nextfit.h"
#include "worstfit.h"
#include "initRand.h" //是每次产生的随机数都不相同
#include "test.h"
void showMemState();
void *mm_init(); //初始化内存块为一整块
//测试内存管理
int main()
{
int n,p;
char c;
if(!mm_init())
printf("memery inital failed!\n");
initRand();
for(int i =0;i<10;i++)
{
request_size_sum = 0;
request_step_sum = 0;
request_success_sum = 0;
printf("内存利用率:%.2f%%\n",test()*100);
printf("平均请求尺寸:%.1f\n",(float)((float)request_size_sum/(float)request_step_sum));
printf("平均搜索步骤:%.2f\n",(float)((float)(float)request_step_sum)/request_success_sum);
printf("-------------------------------------------------\n");
Sleep(1000);
}
/*
c = 'a';
while(c!='q')
{
printf("\nenter \'r\'to request,enter \'l' to release, enter 'q' to exit:");
c = getchar();
switch(c)
{
case 'r':
printf("\nrequest size:");
fflush(stdin);
scanf("%d",&n);
fflush(stdin);
if(!mm_request(n))
printf("memery request failed!\n");
showMemState();
break;
case 'l':
printf("\nrelease pointer:");
scanf("%d",&p);
mm_release(&mem[p]);
showMemState();
break;
default:
;
}
}
*/
/*
printf("enter the size you want get the memery:");
scanf("%d",&n);
if(!mm_request(n))
printf("failed memery request!\n");
else printf("Succed in memery request~\n");
printf("memery state:\n");
showMemState();
*/
return 0;
}
void *mm_init() //先把内存初始化为一整块空闲块
{
head = (memState*)malloc(sizeof(memState));
nextfit=head;
if(!head)
{
printf("Memery Error!");
return 0; //错误返回0
}
head->begin =0; //该块内存起始位置索引为0;
head->end = MEM_SIZE-1; //该块在内存中的结束位置为最后一个
head->before = NULL;
head->next=NULL;
head->state = 1; //可以使用,该内存块未被分配
//初始化块地址为NULL
for(int i=0;i<MEM_SIZE;i++)
{
blockaddr[i] = NULL;
}
return mem;
}
void showMemState()
{
int i;
memState *temp = head;
printf("count number:%d\n",count);
while(temp!=NULL)
{
for(i=0;i<=(temp->end-temp->begin);i++)
{
if(temp->state==0)
printf("|");//表示该部分内存已经被占用
if(temp->state==1)
printf("-");//表示该部分内存空闲
}
temp=temp->next;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -