인프런 커뮤니티 질문&답변
포인터 벡터에 대해 질문이 있습니다
작성
·
262
1
class Lecture
{
private:
vector<Student*>studnets;
}
10분 40 초쯤에 선생님께서 Lecture class 가 사라지면 students instance 는 사라진다 하지만 student* 포인터가 가리키고 있는 원래 주소에 있는것들은 그대로 유지된다고 하셨는데 그렇다면 그 주소에 있는것들은 나중에 delete 을 사용하여 없애주어야하는거 아닌가요?
답변 1
2
맞습니다. delete 해주어야 해요! delete 해주지 않으면 누수가 일어날 것입니다.
그걸 Lecture 객체가 사리지면 포인터 벡터 원소들이 가리키는 student 객체도 자동으로 다 해제할 수 있도록
Lecture 소멸자에 이 부분을 처리해주는 것이 좋겟습니다.
~Lecture()
{
delete teacher;
cout << "delete teacher" << endl;
for (auto & element : students)
{
delete element;
}
cout << "delete students" << endl;
}
이런식으로요!





