#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; }

C语言实现固定长度内存管理的首次适应算法

原文地址: https://www.cveoy.top/t/topic/nSdu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录