|
사무엘 님이 쓰신 글 :
: 궁금합니다. new로 메모리를 할당하고 void형의 포인터로 대입하고 void형의 포인터를 delete할수 있나요? 아래처럼 말입니다.
:
: SomeClass *SomeObj = new SomeClass;
: void* vptr=SomeObj;
: ..........
: delete vptr;
:
: 그리고, 예전의 malloc과 free 함수는 이경우 어떤가요?
:
: 고수님들의 고견을 기대할께요. 꾸벅~. (^ ^);
SomeObj가 가리키는 메모리의 번지로부터 시작해서 SomeClass 형의 인스턴스가 차지하고 있던 메로리가 free됩니다.
하지만, SomeObj의 소멸자가 호출되지 않습니다.
소멸자가 호출되지 않음으로서 발생가능한 문제는 소멸자에서 행하고자 했던 모든 작업을 할 수 없게 되는 것이며 그 중 한가지만을 들자면,
- 메모리 해제가 SomeClass 클래스의 책임이고 이 해제 작업을 소멸자에서 하는 그러한 메로리가 있다면 해당 메모리가 해제되지 않는다는 것입니다.
|