가능한 중복 :
C++: Delete this?
Object-Oriented Suicide or delete this; 개체가 메모리를 할당 해제 할 수 있습니까?
나는 매우 좋은 책 C++ 입문서를 읽어 ++ C를 배우고 내가 배우고 어떻게 C C와 같은 delete
키워드로 ++ 할당 해제 메모리 free
으로합니다. Java와 Pascal에는 메모리를 일시적으로 해제하는 메커니즘이 없습니다. 오랜 시간 동안 실행되고 필요한 변수가 파괴되면 프로그램에서 오류가 발생할 수 있기 때문에 평범하지 않아야합니다.
간단히 말해서 C++에서 변수가 this.delete()
이고 자체가 인 경우 합법적인지 또는 권장 가능한지 궁금합니다. 우리는 대부분 C 및 C++에서 포인터를 해제하는 것에 대해 듣습니다.이 작업은 새로운 free
및 delete
키워드로 완료됩니다. 파스칼도 포인터를 가지고 있지만 자바는 그렇지 않다. 그래서 Java에서는 객체를 명시 적으로 삭제하지 않아야합니다. C는 객체가 없기 때문에 struct
은 free
을 할당 할 수 없었습니다. C가 객체를 가지고 있지 않고 파스칼을 지원하지 않기 때문에 기술적으로 가능하더라도 할당되었습니다. .
그래서 나는 그 개체가 this.delete()
과 같은 것으로 자체를 지우는 것이 합법적인지 의문점으로 C++을 떠난다 고 생각합니까?
하긴 g 그래서 가능하다 -'delete this;'는 C++에서 완벽하게 유효한 문법이고 "올바르게"컴파일하고 실행해야한다. 그러나'* this'는 힙에 할당되어 있다고 가정합니다. 또한 일단 메모리 공간이 없어지면 이전 메모리 할당으로 다시 사용할 수 있기 때문에 메모리 손상을 초래할 수 있습니다. 나쁜 생각. 도망쳐 라! 도망쳐 라! –