>백엔드 개발 >C++ >C에서 'delete this' 다음에 'this'를 사용하는 것이 왜 나쁜 생각인가요?

C에서 'delete this' 다음에 'this'를 사용하는 것이 왜 나쁜 생각인가요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-14 12:47:02824검색

Why is Using

"delete this" 이후 "this"의 위험

C에서 "delete this" 구문의 사용법은 다음과 같습니다. 함정. 사용에 대한 처음 세 가지 제한 사항은 이해할 수 있지만 해당 값을 검토하거나 다른 작업을 수행하는 데 대한 네 번째 제한 사항은 당황스러워 보일 수 있습니다. 결국 그것은 단지 포인터일 뿐입니다. 그렇죠?

이 임의적으로 제한되는 이유는 "delete this"를 호출한 후 "this" 포인터 값의 정의되지 않은 특성에 있습니다. 이 정의되지 않은 값은 예측할 수 없는 결과와 잠재적으로 치명적인 동작을 초래할 수 있습니다.

예를 들어, "this" 포인터를 정수로 재해석한 다음 이에 액세스하려고 시도한다고 가정해 보세요. 컴파일러는 이 작업으로 인해 하드 드라이브가 삭제되는지 여부를 자유롭게 결정할 수 있습니다. 대부분의 컴파일러는 더 합리적으로 작동하지만 정의되지 않은 동작에 직면하여 온화함에 의존하는 것은 위험한 게임입니다.

정의되지 않은 동작의 위험을 방지하려면 포인터를 삭제하기 전에 포인터의 복사본을 만드는 것이 좋습니다. 물체. 이를 통해 원본 "this" 포인터의 동작을 예측할 수 없는 상태로 유지하면서 복사본 작업을 계속할 수 있습니다.

위 내용은 C에서 'delete this' 다음에 'this'를 사용하는 것이 왜 나쁜 생각인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.