首页 > 代码库 > VisualStudio下std::string的内存布局

VisualStudio下std::string的内存布局

主要成员

?
1
2
3
4
5
6
7
8
union _Bxty
    {   // storage for small buffer or pointer to larger one
    _Elem _Buf[_BUF_SIZE];
    _Elem *_Ptr;
    } _Bx;
 
size_type _Mysize;  // current length of string
size_type _Myres;   // current storage reserved for string

其中,_Bx保存着string的真正成员,如果string长度在16以内,可以直接存放到string对象的内部;

否则,_Bx._Ptr保存存放真正内容的指针;

 

当string长度增长时,会重新分配更大的内存空间,并且将原来的字符串拷贝至新分配的空间中去。

在Visual Studio下,sizeof(str1) = 0x00000020 = 32个字节