指向std :: list的指针,它在c ++上有非指针元素

时间:2018-05-17 17:34:31

标签: c++ memory memory-management heap-memory stack-memory

我是c ++世界的新手,我怀疑这一点。 如果我想定义一个指向MyClass元素的std :: list的指针,如下所示:

std::list<MyClass> * myList=new list<MyClass>();

然后,我将2个MyClass实例添加到myList。

MyClass的2个实例在堆栈内存和Heap上的myList上分配,是真的吗? 因此,如果2个实例超出范围,myList会丢失其中的所有元素吗?

在这种情况下,我不清楚内存管理。 所以我测试了这段代码:

list<A> * myList=new list<A>();
{
    A a1(4);
    A a2(1);
    myList->push_back(a1);
    myList->push_back(a2);
    for(A& a:*myList)
        cout << a.getVar()<<endl;
}
    cout <<"a1 and a2 go out of scope"<<endl;
    for(A& a:*myList)
        cout << a.getVar()<<endl;

其中A类代码为:

class A{
    private:
        int var;
    public:
        A(int x){this->var=x;}
        int getVar(){ return var;}
};

输出是:

4
1
a1 and a2 go out of scope
4
1 

0 个答案:

没有答案