08 2019 档案

C++string类,如果中间加个‘/0’,会不会影响长度计算。
摘要:今天看redis源码的时候,觉得sds有点像C++中的string。在C语言字符数组中,如果中间有‘/0’,计算长度就会只计算'/0'前的字符。 SDSHDR结构体加了一个len长度来记录长度,解决了这个问题,使得sds不仅可以存储文本,还可以存储二进制。 突发奇想string会不会也是这样,事实证 阅读全文

posted @ 2019-08-22 17:15 长岛的雪 阅读(2077) 评论(0) 推荐(0)

redis源码分析(2)字符串sds.c
摘要:sds是一个char*的类型别名 可以把这个结构体和对应操作函数类比为C++中STL的string类。 因此可知,如果传入buf的地址s,该结构体的地址就是s-sizeof(struct sdshdr); 这两个函数比较好理解,当传入的sds类型而非普通字符数组时,求sds的现有长度和sds的可用长 阅读全文

posted @ 2019-08-22 17:11 长岛的雪 阅读(311) 评论(0) 推荐(0)