免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1931 | 回复: 6
打印 上一主题 下一主题

关于释放链表内存的一个问题,谢谢大家帮忙看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-03 11:48 |只看该作者 |倒序浏览
是关于线程池的一段代码,整套代码是从CU上一个网友那下载的,不过现在找不到那个帖子了.也没办法引用了.
下面是代码最后释放资源的一部分

while(tpool->queue_head != NULL) {
    cur_nodep = tpool->queue_head->next;                   //  1
    tpool->queue_head = tpool->queue_head->next;    //  2
    free(cur_nodep);  
}

我看不懂1 和2 .如果 cur指向 queue_head->next  
为什么还要 queue_head->next 指向queue_head ?

那样的话free(cur) 之后,queue_head 肯定为空了吧? 那这个循环能执行多少次呢?

论坛徽章:
0
2 [报告]
发表于 2008-04-03 12:22 |只看该作者
呵呵,有问题吧
应该是
cur_nodep = tpool->queue_head;                   //  1

论坛徽章:
0
3 [报告]
发表于 2008-04-03 13:08 |只看该作者

回复 #2 C文_tinker 的帖子

同意

论坛徽章:
0
4 [报告]
发表于 2008-04-03 13:11 |只看该作者
no problem,  i think it has a list head

sorry, no chinese input

论坛徽章:
0
5 [报告]
发表于 2008-04-03 14:47 |只看该作者
我刚把cur_nodep = tpool->queue_head->next;
改成cur_nodep = tpool->queue_head;
不过结果怎么没有什么变化啊 奇怪
我再好好想想吧

光给大家看这段代码太片面了.
怎么传附件啊?那个网友的帖子我搜不到了,我想把线程池的代码再贴一遍

论坛徽章:
0
6 [报告]
发表于 2008-04-03 14:54 |只看该作者
tpool.rar (4.42 KB, 下载次数: 12)

[ 本帖最后由 larace 于 2008-4-3 15:00 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-04-03 15:01 |只看该作者
声明一下,这个文件是从别的网友那下载的,但是忘了他的ID了.不好意思.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP