严蔚敏数据结构P31算法2.12MergeList-L中 free(Lb)怎么理解?
Status MergeList(LinkList *La, LinkList *Lb, LinkList *Lc)
{
LinkListPtr pa = NULL, pb = NULL, pc = NULL;
pa = La->next;
pb = Lb->next;
Lc = pc = La;
while(pa && pb)
{
if(pa->data <= pb->data)
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else
{
pc ->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = (pa ? pa : pb);
free(Lb); //为什么要释放Lb呢?而不释放La呢?
return OK;
}
[解决办法]
返回的Lc 指向了La,所以不能free La
Lc中的Lb的数据是从 Lb->next 开始插入的(pb = Lb->next;)
Lb这个指针还指向一个链表头 所以需要free
[解决办法]
其实1楼说的木有错嘛。对内存的理解啊,还得加强
[解决办法]
Lc与La指向同一处,只有释放Lb指向的地方了
[解决办法]
[解决办法]