zoukankan      html  css  js  c++  java
  • Redis 字符串实现:简单动态字符串-SDS与C字符串的区别

    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>中的函数
  • 相关阅读:
    RSA加密算法
    ios 经典错误
    C--指针函数,static
    svn---命令行操作
    iOS中的自由桥接
    ios--socket
    ios错误修改了系统头文件
    ios数据库FMDB
    CoreDate的使用
    ios简单数据库运用
  • 原文地址:https://www.cnblogs.com/jjfan0327/p/12720841.html
Copyright © 2011-2022 走看看