- string类中维护了三个指针:
using _Base::_M_start;
using _Base::_M_finish;
using _Base::_M_end_of_storage;
-
_M_start为保存字符串的起始地址
-
_M_finish为终止地址;
-
_M_end_of_storage为string对象中当前申请空间的大小;
-
对string类型再次赋值时:
- 如果新值的长度小于当前字符串的长度,使用memcpy直接拷贝;地址空间不变;
- 如果新值的长度大于当前当前字符串的长度,会申请一个新的空间,将新值拷贝过去,并释放原有空间;
- string的c_str()方法返回的就是_M_start的值,将这个值打出来就知道地址是否变化
本文详细介绍了C++标准库中string类的内部实现原理,包括三个关键指针的作用:_M_start、_M_finish和_M_end_of_storage。并阐述了在进行字符串赋值操作时,这些指针如何变化及内存如何管理。
2389

被折叠的 条评论
为什么被折叠?



