Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

범위를 벗어난 배열에 액세스해도 C++에서 오류가 발생하지 않는 이유는 무엇입니까?

<시간/>

이는 C++에서 경계 검사를 수행하지 않기 때문입니다. Java 및 python과 같은 언어에는 경계 검사가 있으므로 경계를 벗어난 요소에 액세스하려고 하면 오류가 발생합니다. C++ 디자인 원칙은 동등한 C 코드보다 느리지 않아야 하며 C는 배열 경계 검사를 수행하지 않는다는 것입니다.

따라서 이 메모리에 액세스하려고 하면 C++ 표준으로 작성되었으므로 프로그램 동작이 정의되지 않습니다. 일반적으로 정의되지 않은 동작이 발생할 때마다 모든 일이 발생할 수 있습니다. 응용 프로그램이 충돌하거나 정지할 수 있으며 정상적으로 실행되거나(최소한 정상적으로 실행되는 것처럼 보일 수 있음) 다른 응용 프로그램을 방해할 수 있습니다(최신 운영 체제에서는 아님) 등.