最坏适应算法C++简单实现
时间: 2024-06-09 08:03:08 浏览: 86
最坏适应算法是一种内存分配算法,其思想是在空闲分区表中选择能满足作业需要且大小最大的分区分配给作业。下面是最坏适应算法的C++简单实现:
```c++
#include <iostream>
using namespace std;
#define MAXSIZE 50 // 空闲分区表最大长度
int mem[MAXSIZE]; // 空闲分区表
// 初始化空闲分区表
void initMem() {
mem = 100; mem = 200;
mem = 300; mem = 400;
}
// 遍历空闲分区表,查找最大的空白分区
int getMaxMem(int size) {
int maxIndex = -1;
int maxMem = -1;
for (int i = 0; i < MAXSIZE; i++) {
if (mem[i] >= size && mem[i] > maxMem) {
maxIndex = i;
maxMem = mem[i];
}
}
return maxIndex;
}
// 分配内存
bool allocate(int size) {
int index = getMaxMem(size);
if (index == -1) {
return false;
}
mem[index] -= size;
cout << "分配成功,分配的起始地址为" << mem[index] << endl;
return true;
}
// 释放内存
void freeMem(int index, int size) {
mem[index] += size;
}
int main() {
initMem();
allocate(250);
freeMem(2, 100);
allocate(150);
return 0;
}
```
上述代码中,initMem()函数用于初始化空闲分区表;getMaxMem(int size)函数用于遍历空闲分区表,查找能够满足作业需要且大小最大的空白分区;allocate(int size)函数用于分配内存;freeMem(int index, int size)函数用于释放内存。在main函数中,我们先分配大小为250的空间,然后释放大小为100的空间,最后再分配大小为150的空间。