C ++内存管理:如何存储成员变量?

时间:2016-01-04 22:06:01

标签: c++ memory-management

这是C++ : Coverity reports leaks for peculiar use of references and containers

的后续行动

问题:*b是在堆上分配的(new B())但是a_vector和它的元素存储在哪里?将新元素推入a_vector时会发生什么?

int main()
{
    ...
    B* b = new B();
    A a;
    b->add_a_to_b( a );
    ...
    delete (b);
}

class B {
public:
    std::vector<A> a_vector;
    void add_a_to_b( const A& a )
    {
       a_vector.push_back( a );
    }

1 个答案:

答案 0 :(得分:3)

a_vector是类B的成员,因此,在创建new B时,内存会与B的其余部分一起分配(也就是您所描述的& #34;在堆上#34;)。

当向元素添加元素时,向量的成员函数(如push_back()会根据需要使用向量的分配器。分配器的执行方式/位置取决于分配器。< / p>