Я новичок в мире C ++, и у меня есть это сомнение.Если я хочу определить указатель на std :: list элемента MyClass следующим образом:
std::list<MyClass> * myList=new list<MyClass>();
и после этого я добавляю 2 экземпляра MyClass в myList.
2 экземпляраMyClass размещены в памяти стека, а 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;
, где код класса:
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