📄 release.h
字号:
void mm_release(void * p);//释放指针p指向的内存块
void mm_release(void *p)
{
/*
memState *temp;//,*temp1,*temp2;
temp = head;
while(temp!=NULL)
{
if(temp->state==0&&(&mem[temp->begin]==p))//要删除指针处有内容
{
if(temp->before!=NULL&&(temp->before->state==1))//如果要释放块前面的块是空则释放并与前面合并
{
temp->before->next = temp->next;
if(temp->next!=NULL)
{
temp->next->before = temp->before;
}
temp->before->end = temp->end;
temp = temp->next;
}
if(temp->next!=NULL&&temp->next->state==1)//如果要释放块后面是空则释放并与后面块合并
{
if(temp->before!=NULL)
{
temp->before->next = temp->next;
temp->next->before=temp->before;
temp->before->end=temp->end;
}
else
{
temp->next=temp->next->next;
//temp->before = temp->before->before;
}
}
temp->state = 1;
// return 1;
}
else
{
temp = temp->next;
}
}*/
memState * tmp = head;
memState * tmp2; //用于得到tmp前面的那个节点
memState * tmp3; //只是用做暂存一下而已,无奈之举
while ( tmp != NULL )
{
if ( (tmp->state == 0) && ( &mem[tmp->begin] == p) )
{
//释放一块内存,块数减一
count--;
tmp2 = tmp->before;
if ( (tmp2 != NULL) && (tmp2->state == 1) )
{
tmp2->next = tmp->next;
tmp3 = tmp->next;
if(tmp3!=NULL)
tmp3->before = tmp2;
tmp2->end = tmp->end;
free( tmp );
tmp = tmp2;
}
tmp3 = tmp->next;
if ( (tmp3 != NULL) && (tmp3->state == 1) )
{
tmp->next = tmp3->next;
tmp3->before = tmp;
tmp->end = tmp3->end;
free( tmp3 );
}
tmp->state = 1;
nextfit=head;
}
else
tmp = tmp->next;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -