글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
좀 편하게 살려다가. ^^
동적할당을 하고, 해제는 전혀 신경쓰지 않는 기법을 발휘하려고 했습니다.
그러다가, - 제가 C++ 은 좀 무식하게 사용하는 사람이라서... - delete 가 void * 에 대입된 클래스 포인터의 파괴자 함수를 실행시키지 않는 다는 것을 알게 되었습니다.
예를 들어, 아래의 경우에
class CDyna {
public:
virtual ~CDyna()
{
int t = 0;
}
};
int main() {
CDyna *pObj = new CDyna;
void *pVoid = pObj;
// delete pVoid;
delete pObj;
return 2;
}
pVoid 를 delete 하게 되면 ~CDyna 가 호출이 되지 않고, pObj 를 delete 하거나, 아니면 (CDyna *)pVoid 와 같이 형변환을 한후, delete 를 해야지만이 ~CDyna 가 호출이 되어집니다.
다들 아시는 거였나요? ^^;
... 196 [197]
... 196 [197]