- 4
- 0
- 约4.75万字
- 约 5页
- 2016-10-22 发布于河南
- 举报
mymalloc边界标识
/*用C/C++系统提供的malloc/free函数从计算机中申请一块较大的空间备用,以下简称“存储池”。
建立存储池的管理系统,要求分别用边界标识法和伙伴系统实现。
写出自己的malloc/free/realloc函数,操作对象是存储池,与存储池管理系统完美衔接。
改写单链表与顺序表,将对系统内存的操作改为对存储池的操作。
编写主程序,证明上述功能正常。*/
#include stdio.h
#include string.h
#include stdlib.h
#include iostream
using namespace std;
#define e 16
#define F(p) (p+p-size/sizeof(WORD)-1) //跟头指针配套的根部指针
class WORD
{
public:
union
{
WORD *llink; //head指向前驱结点
WORD *uplink; //foot指向本结点头部
};
int size; //该内存块的大小
int tag; //标志0表示空闲,1表示已分配
WORD *rlink; //指向后继结点
};
WORD *b;
void m_free(void *p,WORD *pav);
WORD* AllocBoundTag(WORD* pav,int n)
{
WORD* p=pav;
for(p;p!=NULLp-rlink!=pavp-sizen;p=p-rlink);
if(p==NULL||p-sizen)
{
return NULL;
}
pav=p-rlink;
WORD *f=p+(p-size)/sizeof(WORD)-1;
if(p-size-n=e)
{
if(pav==p)
pav=NULL;
else
{
pav-llink=p-llink;
p-llink-rlink=pav;
}
p-tag=1;f-tag=1;
}
else
{
f-tag=1;
p-size-=n;
f=p+(p-size)/sizeof(WORD)-1;
f-uplink=p;
f-tag=0;
p=f+1;
p-tag=1;
p-size=n;
}
return p;
}
void *m_malloc(WORD* pav,int n)
{
n=n/sizeof(WORD)*sizeof(WORD)+sizeof(WORD);
WORD* temp=AllocBoundTag(pav,n);
return (void*)temp;
}
void *m_realloc(void * x,WORD* pav,int n)
{
WORD *temp=(WORD*)x;
if((F(temp)+1)-tag==0((F(temp)+1)-size+temp-size)=n)
{
n=n/sizeof(WORD)*sizeof(WORD)+sizeof(WORD);
WORD* yy=F(temp)+1;
WORD *yyl=yy-llink;
WORD *yyr=yy-rlink;
int yys=yy-size;
int tes=temp-size;
temp-size=n;
F(temp)-uplink=temp;
F(temp)-tag=1;
yy=F(temp)+1;
yyl-rlink=yy;
yy-llink=yyl;
yyr-llink=yy;
yy-rlink=yyr;
yy-tag=0;
yy-size=yys+tes-n;
F(yy)-size=yy-size;
F(yy)-uplink=yy;
}
else
{
m_free(temp,pav);
temp=(WORD*)m_malloc(pav,n);
}
void * zz=(void*)temp;
return zz;
}
void m_free(void *p,WORD *pav)
{
if(p==NULL)
return ;
WORD *temp=(WORD*)p;
int a=0,b=0,c=0;
if((temp-1)-tag==0)
a=1;
if((temp+temp-size/sizeof(WORD))-tag==0)
b=2;
c=a+b;
if(c==1)
{
cout左邻空endl;
(temp-1)-uplink-size+=temp-size;
您可能关注的文档
- EEPO解读1.doc
- ENFP工作求职.doc
- Email邮件头结构及原理.doc
- EPSWconvert.doc
- EVE 如何配置护卫舰.doc
- Excel 我的EXCEl vba后学ACCESSVBA的经历 - Microsoft Access & SQL Server - Excel Home论坛.doc
- ExcelVBA编程24学时教程20.doc
- EVE资料技能大全.doc
- f1-f7.doc
- FC-757AT全自动高频天线调谐器.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 2024浙江嘉兴市众业供电服务有限公司招聘笔试备考试题及答案解析.docx VIP
- Razer雷蛇灵刃15标准版-GTX1660 Ti(RZ09-03009)中文手册.pdf
- ISO90012015标准.ppt VIP
- 2025届湖南新高考教学教研联盟高三第二次联考数学试卷及参考答案.pdf VIP
- 辐射防护手册 第1分册 辐射源与屏蔽_李德平,潘自强主编_北京:原子能出版社_1987.08_10263208_P480.pdf
- 机器人行走机构及控制系统设计和实现计算机专业.pdf VIP
- 建筑装饰装修-分部工程质量验收记录表.doc VIP
- 2024年黑龙江省大庆市中考数学试题(原卷版).pdf
- 2025嘉兴市众业供电服务有限公司招聘74人笔试备考试题及答案解析.docx VIP
- (高清版)DB34∕T 4706-2024 手术智慧医疗系统建设规范.docx VIP
原创力文档

文档评论(0)