struct { //buf中已使用的字節數,等於SDS所保存字符串的長度 int len; //buf中未使用的字節長度 int free; //字節數組,用於保存字符串 char[] buf; }
C字符串 | SDS |
獲取字符串長度的複雜度爲 O(N) | 獲取字符串長度的複雜度爲O(1) |
API不安全,可能形成緩衝區溢出 | API安全,杜絕了緩衝區溢出 |
修改字符串長度N次必然須要N次內存重分配 | 修改字符串長度N次最多發生N次內存重分配 |
只能保存文本 | 二進制安全,能夠保存文本和二進制數據 |
能夠使用全部<string.h>中的函數 | 兼容部分C字符串函數,可以使用部分<string.h>中的函數 |