2012-06-26 6 views
2

가능한 중복 삭제 :
Undefined, unspecified and implementation-defined behavior같은 객체를 두 번

내가 같은 개체를 삭제 호출 알고

재앙이다. 하지만 삭제할 두 번째 호출 전에 메모리가 다른 객체에 대해 다시 할당되지 않는 한 사실입니다. 그러나 아래를 수행하는 것조차 잘못 되었습니까? 만약 내가 그 법을 제거한다면, 그 코드는 코어를 덤핑하지 않습니다.

int main() 
{ 
    A *a1 = new A(); 
    delete a1; 
    cout<<a1<<endl; 
    delete a1; 
} 
+0

당신은 당신이 무엇을 요구하고 있는지 명확히 할 수 있습니까 – Jordan

+0

왜 이것을 할 수 있습니까? – mathematician1975

+1

이것은 정의되지 않은 동작입니다. 그것은 효과가있을 수도 있고, 깨질 수도 있습니다. –

답변

6

What happens in a double delete?를 참조하십시오

예, 그것은 매우 잘못된 것입니다.

큰 문제는 동작이 정의되지 않았기 때문입니다. 따라서 한 컴파일러에서 한 상황에서이 문제를 해결할 수도 있지만 일반적으로 충돌이 발생하는 경향이 있습니다.