我是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