C语言实现固定长度内存管理的首次适应算法
#include<stdio.h> #include<stdlib.h> #define MAX_SIZE 100 // 内存大小
int mem[MAX_SIZE]; // 模拟内存空间 int used[MAX_SIZE]; // 标记内存是否被占用
// 分配内存函数
int allocate(int size){
int i, j;
for(i=0;i<MAX_SIZE;i++){
if(!used[i]){ // 判断该内存块是否被占用
for(j=i;j<i+size;j++){
if(j>=MAX_SIZE || used[j]){ // 如果超出内存空间或者内存块已被占用
break;
}
}
if(j == i+size){ // 如果找到了连续的内存块
for(j=i;j<i+size;j++){
used[j] = 1; // 标记该内存块已被占用
}
return i; // 返回分配的内存块的起始地址
}
}
}
return -1; // 分配失败
}
// 释放内存函数 void deallocate(int start, int size){ int i; for(i=start;i<start+size;i++){ used[i] = 0; // 标记该内存块未被占用 } }
int main(){ int start, size; start = allocate(10); // 分配10个单位的内存 if(start != -1){ printf('分配成功,起始地址为%d\n', start); } else{ printf('分配失败\n'); } deallocate(start, 10); // 释放10个单位的内存 return 0; }
原文地址: https://www.cveoy.top/t/topic/nSdu 著作权归作者所有。请勿转载和采集!