您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

t_BSTdel操作free和赋NULL关系

2024/2/23 17:01:07发布22次查看
调研:t_zset删除操作 zsldelete(zs-zsl,score,c-argv[j]) int zsldelete(zskiplist *zsl, double score, robj *obj) void zsldeletenode(zskiplist *zsl, zskiplistnode *x, zskiplistnode **update) void zslfreenode(zskiplistnode *node zskiplistnode *
调研:t_zset删除操作
zsldelete(zs->zsl,score,c->argv[j])
int zsldelete(zskiplist *zsl, double score, robj *obj)
void zsldeletenode(zskiplist *zsl, zskiplistnode *x, zskiplistnode **update)
void zslfreenode(zskiplistnode *node
zskiplistnode *node中的成员都能访问,说明zfree(node)并没有释放node, 什么时候实现回收。实际上,free(ptr)告诉操作系统回收*ptr空间(如:将该空闲块链接到可用链表),但是该块的内容并未清空,故使用ptr仍能访问*ptr空间。
注意:当ptr1和ptr2同时指向zskiplistnode时,通过zfree(ptr1)告诉操作系统回收*ptr1(zskiplistnode),但是ptr2仍然指向zskiplistnode这片空间,所以ptr2仍能访问zskiplistnode的内容。
内存泄露,链表删除节点,使用free(ptr),和ptr = null之间的关系,free仅告诉os回收资源,而ptr指针仍存放这片空间的地址,指向这片空间,如果未设置读写保护,ptr依旧能访问这片空间的内容;所以free(ptr)之后,显式设置ptr为null,避免出现不可预期的错误(读到不该读的或写入不该写的空间)。
冒号表达式使用
lr > 0?pnode->rchild:pnode->lchild = null;
必须使用int i = (boolean expression)? a:b;
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product