vector容器在不同环境下的内存分配

按照STL原码剖析的说法:vector在新增元素时,如果超过当时的容量,则容量会扩充至两倍。

我简单试了一下vector容器在Windows下用vs 2017分配的情况,以一下代码为例:

#include <iostream>
#include <vector>
using namespace std;
int main()
{
   
	int i;
	vector<int>iv(2, 9);
	cout << "size=" << iv.size() << endl;
	cout << "capacity=" << iv.capacity() << endl;

	iv.push_back(1);
	cout << "size=" << iv.size() << endl;
	cout << "capacity=" << iv.capacity() << endl;//为什么不是4
	

	return 0;

}

输出结果:

vector容量并没有扩展至两倍,而是只增加了一个元素空间给新增加的元素使用。

接下来在linux上试验
试验结果:

可以看到当vector在新增元素时,如果超过当时的容量,则容量会扩充至两倍,所以最后的容量为4,实际大小3。

感兴趣欢迎关注微信公众号:黑马金牌编程