basic_string的基本格式:
其中cap和local_buf是在同一内存空间(使用union共享)
其中dataplus实际上就是个指针,指向实际存储字符的内存空间,length就是字符串长度,cap是当前分配出的空间大小,local_buf是一块0x10大小的本地空间
basic_string实际结构有两种情况:
使用的空间总是连续的,其迭代器满足 forward_iterator
,且相当于普通指针
具体实现与vector相似
struct string_t {
char* ptr;
size_t length;
union {
char local_buf[sizeof(size_t)];
size_t cap;
};
}