[해결]구조체 안에 클래스로 선언한 객체에 대하여

dltkddyd의 이미지

ast라는 구조체 타입이 있고, ccla라는 클래스 타입이 있습니다. ccla에는 문자형 포인터가 있고요. 그리고 ast 안에 ccla로 선언된 obj가 존재합니다. 그리고

ast* head;

라고 전역에서 선언했습니다. 그리고 특정 함수에서 head에 동적할당을 다음의 방식으로 합니다.

void set(ccla ft) {
head=new ast;
head->obj=ft;
}

이 때 head->obj 라는 객체는 언제 소멸할까요?

첫번째, head가 전역이니, 프로그램이 종료될 때,
두번째, head에 동적으로 할당하는 함수가 반환주소로 돌아온 직후
세번째, delete로 hed를 지울 때

그리고 head->obj의 동적으로 할당된 문자형 포인터가 가리키는 메모리는 언제 해제되나요?

jick의 이미지

(1) delete head할 때 ccla의 소멸자가 호출됩니다.

(2) 그건 head->obj의 소멸자가 뭘 하느냐에 달렸지요.

dltkddyd의 이미지

감사합니다. 당장 만들어봐야 겠네요.

본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.