vector是动态分配内存的,猜测数据区域在堆上进行验证
int main()
{
vector<int> testvector();
vector <int >array=testvector();
cout <<array[0];
getchar();
}
vector<int> testvector()
{
vector<int> array;
array.push_back(1);
return array;
}
输出结果:
1.
so猜想正确。
理论验证:
STL源码剖析
void push_back(_Ty&& _Val)
{ // insert element at end
if (_Inside(_STD addressof(_Val)))
{ // push back an element
size_type _Idx = _STD addressof(_Val) - this->_Myfirst;
if (this->_Mylast == this->_Myend)
_Reserve(1);
_Orphan_range(this->_Mylast, this->_Mylast);
_Cons_val(this->_Alval,
this->_Mylast,
_STD forward<_Ty>(this->_Myfirst[_Idx]));
++this->_Mylast;
}
else
{ // push back a non-element
if (this->_Mylast == this->_Myend)
_Reserve(1);
_Orphan_range(this->_Mylast, this->_Mylast);
_Cons_val(this->_Alval,
this->_Mylast,
_STD forward<_Ty>(_Val));
++this->_Mylast;
}
}