资源简介
在linux操作系统下模拟linux操作系统内存管理以及分配,学习操作系统内存管理以及分配,代码用c++示例。
代码片段和文件信息
#include
#include “my_malloc.h“
static Header base; /* 定义空闲链头,存储块划分的最小单位 */
static Header *free_list = NULL; /* 定义空闲链查询起始指针 free_list */
/* Malloc: 通用存储区分配函数 */
void*
Malloc(unsigned int nbytes)
{
Header *p *prev;
unsigned int nunits;
nunits = (nbytes + sizeof(Header) - 1) / sizeof(Header) + 1;
if ( (prev = free_list) == NULL) { /* 空闲链上无任何空闲区块,定义空闲链 */
base.s.next = free_list = prev = &base;
base.s.size = 0;
}
for (p = prev->s.next; ; prev = p p = p->s.next) {
if (p->s.size >= nunits) { /* 够大 */
if (p->s.size == nunits) /* 整好 */
prev->s.next = p->s.next;
else {
p->s.size -= nunits;
p += p->s.size;
p->s.size = nunits;
}
free_list = prev;
return (void *)(p + 1);
}
if (p == free_list)
if ( (p = morecore(nunits)) == NUL
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2252 2011-12-01 12:44 my_malloc.c
文件 407 2011-12-01 12:39 my_malloc.h
文件 607 2002-12-15 13:02 test.c
文件 135 2003-06-15 12:48 makefile
----------- --------- ---------- ----- ----
3401 4
- 上一篇:C语言习题100例最新整理版
- 下一篇:归并排序算法代码实现
评论
共有 条评论