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

/*
* 返回 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))代表什么?

回答

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

以上是redis源码中获取SDS可用空间长度的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>