码迷,mamicode.com
首页 > 编程语言 > 详细

使得Redis可以直接使用C语言的相关字符。

时间:2020-06-26 14:49:33      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:缓冲区溢出   需要   标识   分配   redis   读取   要求   数据   未使用   

当前存储字符串长度为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字符串来说,要特别注意内存分配,回收使用问题。

比如,向一个现有字符串内添加特定字符时,需要保证当前已经分配了这足够的内存。 

使得Redis可以直接使用C语言的相关字符。

标签:缓冲区溢出   需要   标识   分配   redis   读取   要求   数据   未使用   

原文地址:https://www.cnblogs.com/nokusig/p/13194716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!