码迷,mamicode.com
首页 > 其他好文 > 详细

Redis 字符串实现:简单动态字符串-SDS与C字符串的区别

时间:2020-04-26 13:47:24      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:修改   api   的区别   table   border   进制   复杂   free   字符   

2.1 SDS的定义

struct {
    //buf中已使用的字节数,等于SDS所保存字符串的长度
    int len;
    //buf中未使用的字节长度
    int free;
    //字节数组,用于保存字符串
    char[] buf;
}

2.2 SDS与C字符串的区别

C字符串 SDS
获取字符串长度的复杂度为 O(N) 获取字符串长度的复杂度为O(1)
API不安全,可能造成缓冲区溢出 API安全,杜绝了缓冲区溢出
修改字符串长度N次必然需要N次内存重分配 修改字符串长度N次最多发生N次内存重分配
只能保存文本 二进制安全,可以保存文本和二进制数据
可以使用所有<string.h>中的函数 兼容部分C字符串函数,可使用部分<string.h>中的函数

Redis 字符串实现:简单动态字符串-SDS与C字符串的区别

标签:修改   api   的区别   table   border   进制   复杂   free   字符   

原文地址:https://www.cnblogs.com/jjfan0327/p/12720841.html

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