0
所以我没有能力为我的生活做的事情是把这个新节点放入链表中,按顺序排列他们的startbyte
和endbytes
。然后我需要它看看节点是否彼此相邻,如果是的话。让它们成为一个大节点。按照顺序将节点放在链表中
下面是一些代码我的工作是从第一个列表中释放内存,但在创建新节点后,我无法找到一种可行的方法,我尝试了多种不同的方法。
void release_memory(const int job)
{
ALLOCPTR t = alloclist;
FREEPTR f = freelist;
ALLOCPTR prev = alloclist;
while(t!=NULL)
{
if(t->id == job)
{
if(t==alloclist)
{
alloclist=alloclist->next;
}
else
{
prev->next = t->next;
}
FREEPTR newfreenode = new FREE_NODE;
newfreenode->start_byte = t->start_byte;
newfreenode->end_byte = t->end_byte;
newfreenode->size = t->size;
while(f->next!=NULL)
{
f=f->next;//
}
f->next = newfreenode;
checkIfFreeTogether();
}
prev=t;
t=t->next;
}
的,我需要做的事情的一个例子是这样的
before any memory freeing
JOB MEMORY
1 1-49
2 50-99
3 100-199
After freeing 2 and 3
job memory
1 1-49
FREE 50-99
FREE 100-199
After creating one big free node out of the two
job memory
1 1-49
FREE 50-199
你能举一个你想要达到的例子吗?我得到你正在试图对列表的节点和MSB,LSB或节点值的所有字节做些什么。但无法弄清楚什么... – Pandrei
如果'freelist'是'NULL'会怎么样? –