使得Redis可以直接使用C语言的相关字符。
当前存储字符串长度为5,未使用长度为0,字节数组存储的字符为“Redis\0”。
这里需要注意的是:内部数据数组存储字符串形式符合C语言要求,以‘\0’结尾。且len字符串长度不包含结尾标识符‘\0’。
buf[]的这种遵循C语言形式的存储,使得Redis可以直接使用C语言的相关字符串函数进行SDS对象的操作。
二、SDS的优势
1、O(1)时间复杂度获取字符串长度
SDS内部维护着一个字符串长度的len变量,可以直接读取,时间复杂度为O(1)。
对于传统的C字符串:字符+“\0”,想要获取字符长度,则需要遍历整个字符串,直到遇到结束字符,时间复杂度为O(n)。
2、缓冲区溢出规避
所谓缓冲区溢出即所需要的内存超出了实际的内存。因此对于C字符串来说,要特别注意内存分配,回收使用问题。
比如,向一个现有字符串内添加特定字符时,需要保证当前已经分配了这足够的内存。
相关推荐
拉斯厄尔高福 2020-07-19
yunfeitian 2020-06-18
chensen 2020-11-14
拉斯厄尔高福 2020-11-04
杜倩 2020-10-29
拉斯厄尔高福 2020-10-19
嵌入式资讯精选 2020-10-15
zhaochen00 2020-10-13
penkgao 2020-10-13
yiyilanmei 2020-10-05
wanshiyingg 2020-09-29
Mars的自语 2020-09-27
shenwenjie 2020-09-24
一个逗逗 2020-09-22
flycony 2020-09-13
zhaochen00 2020-08-20
Biao 2020-08-20
qingsongzdq 2020-08-19
penkgao 2020-08-17