|
사무엘 님이 쓰신 글 :
: 답변 감사합니다. 실제로 테스트를 해보고 싶었는데 할 방법이 막연해서 질문을 올렸던 것입니다.
: 소멸자에서 해야할 메모리 해제가 있는 경우는 소멸자에서 메모리 해제를 안하고 다음과 같이 했어요.
: 이렇게 하는게 가능한 건지도 궁금합니다.
:
: SomeClass *SomeObj = new SomeClass;
: void* vptr=SomeObj;
: ..........
: SomeClass *OtherPtr=(SomeClass*)vptr;
: delete OtherPtr->a; //a는 SomeClass의 생성자에서 new로 할당된 포인터
: ..........
: delete vptr;
소멸자가 호출되지 않았을 때 발생가능한 문제는 예로 든 것에 국한하지 않습니다.
SomeClass가 다른 클래스를 상속받은 것이 아니고 SomeClass의 소멸자에서 할 작업으로서 명시적으로 지정한 작업이 오직 a가 가리키는 메모리를 해제하는 것이라면 위와 같이 해도 문제 없겠습니다.
|