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

C++ Memory Management: How are member variables stored?

本文关键字:何存储 存储 管理 内存 成员 变量 C++      更新时间:2023-10-16

这是C++的后续:Coverity报告引用和容器特殊使用的泄漏

问题:*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 );
    }

a_vector是类B的成员,因此,在创建new B时,内存将与B的其余部分一起分配(也称为"堆上")。

当元素被添加到向量中时,向量的成员函数(如push_back())会根据需要使用向量的分配器。分配器的操作方式/位置取决于分配器。