91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

操作系統(tǒng)內(nèi)存分配與回收C語言模擬。包含源代碼和.exe可執(zhí)行文件

資源截圖

代碼片段和文件信息

#define?minisize?50??????/*空閑區(qū)_申請空間≤minisize?時,分配整個空閑區(qū)*/
#define?m?20??????????????/*假定系統(tǒng)允許的空閑區(qū)表最大為m*/
#include?“stdio.h“

/*系統(tǒng)中主要數(shù)據(jù)結(jié)構(gòu)*/
struct
?{float?address;?????/*空閑區(qū)起始地址*/
??float?length;??????/*空閑區(qū)長度,單位為字節(jié)*/
??int?flag;??????????/*空閑區(qū)表登記欄標(biāo)記,用0表示空欄目,用1表示未分配*/
?}free_table[m];?????/*空閑區(qū)表*/

struct
{
????float?address;
????float?length;
????int?flag;
}used_table[m];


void?init_free_table()????????//采用最佳適應(yīng)算法初始化內(nèi)存分區(qū)
{
????int?i;
????free_table[0].address=0;
????free_table[0].length=200;
????free_table[0].flag=1;
????for(i=1;i????{
????????free_table[i].address=free_table[i-1].address+free_table[i-1].length;
????????free_table[i].length=free_table[i-1].length+300;
????????free_table[i].flag=1;
????}
}

void?init_used_table()
{
????int?i;
????for(i=0;i????{
????????used_table[i].address=0;
????????used_table[i].length=0;
????????used_table[i].flag=0;
????}
}
float?xk0=0;//定義一個全局變量存儲實際分配長度
float?input()
{
????float?a;
????while(1)
????{
????????fflush(stdin);
????????printf(“請輸入要裝入的程序的大小:“);
????????scanf(“%f“&a);
????????if(a<=0)
????????????printf(“輸入數(shù)值不合法!“);
????????else
????????????break;
????}
????return?a;
}


float?allocate(float?xk)
{
?int?ik;
?float?ad;
?k=-1;

?for(i=0;i????if((free_table[i].flag==1)?&&?(free_table[i].length>=xk))
????????{k=i;
????????break;}
if(k==-1)????????/*?無可用空閑區(qū)返回?*/
?????{printf(“no?free?space\n“);
?????????return(-1);
?????}
????if(free_table[k].length-xk<=minisize)????????/*?找到可用空閑區(qū)開始分配?*/
?????{free_table[k].flag=0;
?????ad=free_table[k].address;
?????xk=free_table[k].length;
?????}
????else
?????{free_table[k].length=free_table[k].length-xk;
?????ad=free_table[k].address+free_table[k].length;
??????}
????xk0=xk;
????return(ad);
}

void?record(float?xk1)?????//記錄已分配內(nèi)存
{
????static?int?used_i=0;??????//只初始化一次
????float?ad1;
????ad1=allocate(xk1);

????if(ad1==-1)
????{
????????printf(“無法裝入該程序!“);
????????return;
????}
????used_table[used_i].address=ad1;
????used_table[used_i].length=xk0;
????used_table[used_i].flag=1;
????used_i++;
????}

void?display_free()
{
????int?i;
????printf(“未分配內(nèi)存:\n“);
????printf(“編號???????開始地址???????結(jié)束地址???????長度???????狀態(tài)\n“);
????for(i=0;i????{
????????if(free_table[i].flag==1)
????????{
????????????printf(“?%2d??????????%5g???????%5g?????????%5g???????未分配\n“i+1free_table[i].addressfree_table[i].address+free_table[i].lengthfree_table[i].length);
?????????}
????}
????printf(“\n\n“);
}
void?display_used()
{
????int?i;
????printf(“已分配內(nèi)存:\n“);
????printf(“編號???????開始地址???????結(jié)束地址???????長度???????狀態(tài)\n“);
????for(i=0;i????{
????????if(used_table[i].flag==1)
????????{
????????????printf(“?%2d??????????%5g???????%5g?????????%5g???????已分配\n“i+1used_table[i].addressused_table[i].address+used_table[i].lengthused_table[i].length);
?????????}
????}
????printf(“\n\n“);
}



void?re

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????6656??2014-06-22?15:19??collect.exe
?????文件????????5484??2014-06-22?15:19??main.c

評論

共有 條評論

相關(guān)資源