강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

jsh4059님의 프로필 이미지
jsh4059

작성한 질문수

홍정모의 따라하며 배우는 C++

10.3 집합 관계

포인터 벡터에 대해 질문이 있습니다

작성

·

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;
	}

이런식으로요! 

jsh4059님의 프로필 이미지
jsh4059

작성한 질문수

질문하기