이 질문이 Does calling a destructor explicitly destroy an object completely?인데,이 상황은 코드에 나와 있습니다.소멸자를 수동으로 호출 한 후 어떻게 메모리를 삭제합니까?
Object* aWidget = new Widget(); //allocate and construct
aWidget->~Object(); //destroy and DON'T deallocate
답변에서 나는이 상황에서 실제로 메모리 영역이 할당 해제되지 않았 음을 밝힙니다. 내 질문은 (무엇보다 호기심에서) :
위 코드 두 줄을 실행 한 후에 위젯이 가리키는 메모리를 삭제하려면 어떻게해야합니까? 내가 이미 delete aWidget;
호출하면 이미 파괴 된 개체에 소멸자를 실행하려고하기 때문에 실패 할 것이라고 가정합니다. free(aWidget)
또는 그 대신 메모리를 대상으로 호출 할 수 있습니까?
나는 내가 주석으로 게시하도록하겠습니다 확실하지 않다,하지만 당신은'연산자 (aWidget)을 삭제'호출 할 수 있습니다. 비록 유효한 유즈 케이스로서이 문제에 부딪히는 코드를 보게된다면 궁금 할 것이다. –
@ CoryNelson 당신 말이 맞아요, 제 대답을보십시오. 나는 당신이 코멘트를 올렸을 때 그것을 타이핑했다. –