vector内存分配

来源:互联网 发布:桌宠软件 编辑:程序博客网 时间:2024/06/11 04:07

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 endif (_Inside(_STD addressof(_Val))){// push back an elementsize_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-elementif (this->_Mylast == this->_Myend)_Reserve(1);_Orphan_range(this->_Mylast, this->_Mylast);_Cons_val(this->_Alval,this->_Mylast,_STD forward<_Ty>(_Val));++this->_Mylast;}}



0 0