首页 新闻 会员 周边

redis源码中获取SDS可用空间长度

0
[已解决问题] 解决于 2022-06-12 10:37
/*
 * 返回 sds 可用空间的长度
 *
 * T = O(1)
 */
static inline size_t sdsavail(const sds s) {
    struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr)));
    return sh->free;
}

为什么不能直接使用s->free获取可用空间长度?s-(sizeof(struct sdshdr))代表什么?

Veritas_des_Liberty的主页 Veritas_des_Liberty | 初学一级 | 园豆:190
提问于:2022-06-11 21:24
< >
分享
最佳答案
0

因为SDS返回的结果是*buf
s-(sizeof(struct sdshdr))代表的是整个SDS结构体
只有这样才能够使用SDS中的其它变量lenfree

Veritas_des_Liberty | 初学一级 |园豆:190 | 2022-06-12 10:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册