자식 클래스의 동적메모리를 부모 클래스에서 받고 메모리 해체시에 질문

ikpil의 이미지


1. 부모 클래스를 만든다. 12바이트, 소멸자는 가상 소멸자 4바이트
2. 자식 클래스를 만든다. 8바이트, 부모를 상속 받는다.

3. 부모 클래스* hehe = new 자식클래스

//
여기서 질문
(1) *hehe 는 16바이트(가상 테이블 포함)로 출력 됩니다.
이때 자식클래스는 8바이트 해서 총 24바이트가 new에 의해서 할당되나요?

4. delete hehe;
//
여기서 질문
(1) 자식클래스가 24바이트 할당 받았다면 delete hehe는 몇바이트 해체를 해주나요?

klara의 이미지

(1) 당연합니다. 자식 클래스를 생성했으므로 이때 할당되는건 sizeof(자식클래스)입니다.
(2) 부모클래스의 소멸자가 가상 함수로 선언되어있다면, 포인터의 형이 부모클래스이던 자식 클래스이던 처음 할당된 메모리가 전부 해제됩니다.
보통 가상함수와는 좀 다르게, 소멸자가 가상함수로 선언되면 자식 클래스의 소멸자부터 부모클래스의 소멸자를 차례대로 호출해가게됩니다.

ikpil의 이미지

감사합니다. 해체가 된다니 마음이 놓입니다.^^