小编use*_*541的帖子

向量如何分配内存

HII我知道矢量分配的连续固定的内存时,它需要如果它不能够适应它,它会alllocate新的内存和旧的值复制到其中并删除旧内存的push_back一些items.And.如果是下面的代码是如何工作的情况下

#include<iostream>  
#include<vector>  
using namespace std;   

class Test   
{
public :   
    int val;   
    Test()   
    {
        val=0;   
    }   
};   


int main()   
{
    vector<Test>vec;   
    Test t[10];   
    for (int i=0;i<5;i++)   
        vec.push_back(t[i]);   
    cout<<vec.capacity()<<endl; //printing 8   
    Test* obj=&vec[2];   
    obj->val=2;   
    cout<<obj<<endl;   
    for (int i=0;i<5;i++) //Adding 5 elements more 
        vec.push_back(t[i]);   
    Test* obk=&vec[2];    
    cout<<obk->val<<endl;    
    cout<<obj->val<<endl;    
    cout<<obj<<endl;  
    cout<<obk<<endl;  
}  
Run Code Online (Sandbox Code Playgroud)

在这里,如果你看到obj正在使用vec [2]的指针,我的机器中的值即将到来0x8bcb048.然后我又插入了5个项目,因此vector将分配新的内存.现在,如果我从向量[2]中获取obk它会变得不同地址0x8bcb070.但如果我试图在obj的帮助下接受我没有给出任何问题.任何理由?

c++

3
推荐指数
1
解决办法
1244
查看次数

标签 统计

c++ ×1