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

세그먼테이션 오류는 C++에서 실제 정의되지 않은 동작입니까?


정의되지 않은 동작은 구현자(예:컴파일러 또는 OS)와 컴퓨터가 "원하는" 모든 작업, 즉 결과에 신경 쓰지 않도록 하는 자유를 주는 방법입니다.

세그먼테이션 오류가 발생하는 경우는 본질적으로 일시적입니다. 항상 분할 오류가 발생하지는 않지만 올바르게 실행될 수도 있습니다(또는 최소한 표시되는 것처럼 보일 수도 있음). 예를 들어, 다음 코드 조각을 고려하십시오 -

#include<iostream>
int main() {
    int arr[2];
    arr[0] = 0;
    arr[1] = 1;
    arr[2] = 2; // Undefined behaviour
    arr[3] = 3; // Undefined behaviour
}

이 코드는 올바르게 실행되거나 분할 오류가 발생할 수 있습니다. 실제로 정의되지 않고 구현에 따라 다릅니다. 정의되지 않은 동작에 대한 자세한 내용은 여기에서 확인할 수 있습니다. https://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html