VisualStudio下std::string的内存布局

主要成员

	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个字节

posted @ 2014-06-03 17:38  Daniel King  阅读(1060)  评论(0编辑  收藏  举报