삭제가 포인터에 자동으로 NULL을 할당하지 않는 이유는 무엇입니까?
C 언어 표준에서는 포인터 값을 NULL로 자동 설정하도록 요구하지 않습니다. 삭제 연산자를 호출한 후. 직관에 어긋나는 것처럼 보일 수 있지만 이렇게 결정한 데에는 몇 가지 이유가 있습니다.
성능
질문에서 언급했듯이 포인터를 NULL로 설정하는 추가 명령은 잠재적으로 특히 성능이 중요한 코드에서 삭제 작업 성능에 영향을 미칩니다.
Const 포인터
또 다른 잠재적인 문제는 일부 포인터가 const로 선언될 수 있다는 것입니다. 이러한 포인터의 경우 삭제 작업 후에 해당 값을 변경하려고 시도하는 것은 불가능합니다. 이러한 포인터에 대해 특별한 경우가 만들어질 수 있다고 주장할 수 있지만 표준은 모든 경우에 포인터 값을 수정하지 않음으로써 일관성을 유지하기로 결정했습니다.
Lvalue가 아닌 인수
삭제 연산자는 rvalue 참조와 같은 lvalue가 아닌 인수를 허용할 수 있습니다. 이러한 시나리오에서는 포인터 값을 수정할 수 없습니다. 이는 모든 인수 유형에 대한 동작의 일관성을 보장하기 위한 표준의 기술적 한계를 제기합니다.
Bjarne Stroustrup의 설명
C의 창시자인 Bjarne Stroustrup이 이 문제를 해결했습니다. 문제:
따라서 C에서 포인터를 삭제해도 자동으로 NULL로 설정되지는 않지만 표준에서는 성능, const 포인터, lvalue가 아닌 인수 및 이러한 결정을 내리기 위해서는 일관성이 필요합니다.
위 내용은 C에서 `delete`가 자동으로 포인터를 NULL로 설정하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!