這是一個後續C++ : Coverity reports leaks for peculiar use of references and containersC++內存管理:成員變量是如何存儲的?
的問題:*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'的實例如何覆蓋'new').a_vector的內容存儲在一個實現定義最有可能在堆上 –