stl string内存空间增长探索

void *operator new(size_t size)
{
	printf("allocate %d \n",size);
	return malloc(size);
}


void teststring()
{
	auto printstr = [](const string &str) {
		printf("%s size=%d,capacity=%d\n", str.c_str(),str.size(),str.capacity());
	};
	string str = "";
	printstr(str);
	string a = "a";
	for (int i = 0; i < 100;i++)
	{
		str += a;
		printstr(str);
	}

}

int main()
{
	teststring();
	system("pause");
}

结果:
stl string内存空间增长探索_第1张图片
从结果可以看出它的布局和vector及其相似。当长度超出容量时,就“翻倍”分配内存,然后再把复制过去。

你可能感兴趣的:(C/C++基础,STL,c++,开发语言)