资源简介
Buddy 伙伴 算法 ,Windows编程环境。

代码片段和文件信息
#include//包含头文件
int free[10]= {0000000001}
use[100][2]= {0}buddy[10]= {2481632641282565121024}
free_add[10][50]= {0}usenum=0; //定义外部变量
void PrintTable( ) //输出功能表函数
{
printf(“功能说明表:\n“);
printf(“1.申请内存\n“);
printf(“2.释放内存\n“);
printf(“3.退出\n“);
}
void show() //输出内存占用情况
{
int ij;
printf(“\n内存空闲区剩余情况:\n“);
for(i=0; i<10; i++) //输出空闲情况
{
printf(“%4d:有%d个空闲块 起始地址分别为: “buddy[i]free[i]);
for(j=0; j printf(“%4d~%4d “free_add[i][j]free_add[i][j]+buddy[i]-1);//??
printf(“\n“);
}
printf(“\n内存已分配区情况:\n“); //输出占用情况
for(i=0; i printf(“%2d: 大小:%4d 内存地址:%4d~%4d\n“i+1buddy[use[i][0]]use[i][1]use[i][1]+buddy[use[i][0]]-1);
}
void main()
{
int ijkordersizestartmaxsize=9usepageshengfree_startflag;
PrintTable();
// free_add[2][0]=0;
free_add[9][0]=0;//初始化已分配内存
b:
show();
printf(“\n输入你要执行的命令:“);
scanf(“%d%*c“ &order);
while( order != 3 ) //接受命令
{
if ( order < 1 || order > 3 ) //非法命令检测
{
printf(“输入的非法命令,请重新输入:“);
scanf(“%d%*c“ &order);
continue;
}
if ( order == 1 )
{
a:
printf(“输入作业申请空间的大小(1~1024):“); //输入要申请内存的大小
scanf(“%d%*c“ &size);
if(size<1||size>1024)
{
printf(“请输入1~1024之间的数字\n“); //检查输入正确性
goto a;
}
else if(size>buddy[maxsize])
{
printf(“没有足够的内存,请先释放\n“); //检查内存空间
goto a;
}
else
{
for(i=0; i<10; i++)
{
if(free[i]!=0&&size<=buddy[i]) break; //寻找合适内存
}
usepage=i;
free[i]--;
for(i=0; i<10; i++)
{
if(buddy[i]>=size) break; //寻找分裂大小
}
use[usenum][0]=i;
use[usenum][1]=free_add[usepage][free[usepage]]; //添加已分配表
sheng=buddy[usepage]-buddy[use[usenum][0]];
start=free_add[usepage][free[usepage]]+buddy[usepage]-buddy[usepage-1]; //首地址确定
usenum++;
for(i=usepage-1; i>=0; i--) //添加其他页面内存大小
{
if(sheng>=buddy[i])
{
free[i]++;
free_add[i][free[i]-1]=start;
sheng-=buddy[i];
start-=buddy[i-1]; //首地址确定
}
if(sheng==0) break;
}
if(free[maxsize]==0) //确定最大剩余空间
{
maxsize=0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6108 2011-08-31 09:49 myBuddy.c
相关资源
- CCS FFT c语言算法
- 小波变换算法 c语言版
- 3des加密算法C语言实现
- DES加密算法C语言实现
- 线性回归算法c语言实现
- 基于C语言的模拟退火算法
- C语言实现的DES对称加密算法
- 用VC6.0实现多边形扫描线填充算法
- c语言编写的货郎担算法
- Em算法(使用C++编写)
- STM32烧写算法flash包
- 永磁同步电机的FOC控制算法
- Proteus仿真:PID算法输出.rar
- 一个模糊PID温度控制算法源代码
- 经典滤波算法
- KMP算法C语言程序
- SVM算法实现(源码+文档)
- 算法A律U律实现
- 人工蜂群算法.docx
- BlowFish加密算法
- C语言常用算法源代码
- c++数组快排算法
- 算法表达式求值.cpp
- PID算法.c
- QR二维码C++源码 算法实现
- 基于opencv漫水填充算法综合
- 信息学奥赛一本通——算法部分
- 银行家算法分配资源的模拟实现(m
- C语言程序设计50例.docx
- 常见排序算法比较.cpp
评论
共有 条评论