cmatrixprobe

发呆业务爱好者

Golang中container/list的坑

最近用到了标准库中的container/list包实现一个双端队列,当准备清空deque的时候我是这么写的:
错误删除list中节点
结果却只删除了deque中首个元素。我看了一下list的源码,发现整个实现十分简陋,去掉注释总共才100多行。
list中Element定义
节点的定义只有前后指针、存储的值和所属的list,很标准的双向链表,再看一下remove方法:
list的remove方法
问题就出在第四行,为了避免内存泄漏,next指针被释放了,那么可以用临时变量代替一下:
正确循环删除list节点
如果只是清空list,更推荐的做法是使用Init()
初始化清空list

Hello World!

上一篇

移动SSD安装配置WTG(Windows To Go)

下一篇
评论
头像 发表评论 说点什么
还没有评论
2016
0