2.1 SDS的定義 struct { //buf中已使用的位元組數,等於SDS所保存字元串的長度 int len; //buf中未使用的位元組長度 int free; //位元組數組,用於保存字元串 char[] buf; } 2.2 SDS與C字元串的區別 C字元串 SDS 獲取字元串長度的複雜度為 ...
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>中的函數 |