动态分区存储管理首次适应算法c语言代码
时间: 2024-08-12 18:07:59 浏览: 56
首次适应(First Fit)算法是一种简单的动态内存分配策略,它在内存空间中寻找第一个足够大的空闲区来满足请求的大小。以下是一个简单的C语言实现示例,使用链表表示空闲区:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
size_t size;
struct free_block *next;
} FreeBlock;
FreeBlock *free_list = NULL; // 链表头部
// 动态内存分配
void* dynamic_allocate(size_t size) {
for (FreeBlock *block = free_list; block != NULL; block = block->next) {
if (block->size >= size) {
// 分配内存
void *ptr = block->size;
// 更新空闲区信息
block->size -= size;
if (block->size == 0) {
block->next = free_list;
free_list = block;
} else {
block->next = block->next->next;
}
return ptr;
}
}
// 如果没有找到足够的空间,返回NULL表示失败
return NULL;
}
// 释放内存
void dynamic_deallocate(void* ptr) {
// 检查指针是否有效
if (ptr == NULL) return;
// 找到对应空闲区并插入链表
FreeBlock *current = free_list;
while (current != NULL && current->size != (size_t)(ptr - free_list)) {
current = current->next;
}
if (current == NULL) {
printf("Error: Invalid pointer.\n");
return;
}
current->size += (size_t)(ptr - free_list);
free_list = current->next;
}
int main() {
// 示例使用
int *p = (int*)dynamic_allocate(4); // 分配4字节
if (p == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
// 使用后释放
dynamic_deallocate(p);
return 0;
}
```
阅读全文