마지막 깊은 복사 부근에서
public:
Knight()
{
_pet = new Pet();
}
Knight(const Knight& knight)
{
_hp = knight._hp;
_pet = new Pet(*(knight._pet)); // 깊은 복사
}
~Knight()
{
delete _pet;
}
Knight& operator=(const Knight& knight)
{
delete _pet; // <- 이부분
_hp = knight._hp;
_pet = new Pet(*(knight._pet));
return *this;
}
Knight k;
Knight k1;
k1 = k;
이렇게 하게되면 k1이 만들어지면서 Pet하나가 동적할당 되고
다시 대입 연산자로 k1 = k 에서 Pet하나가 더 동적할당이 되는데
위처럼 대입연산자 구현부에서 시작 시 원래 할당되있던 아이를
해제해주고 다시 동적할당 해주면 메모리 누수가 일어나지 않게 되는게 맞나요?
아 while문을 돌려서 확인하는 방법이 있군요 ㅎㅎ 감사합니다