#include <iostream>
using namespace std;
int a[4];
int main(){
int b=7;
cout<<a[b]<<endl;
return 0;
}
할당되지 않은 메모리에 액세스하려고했습니다. 그래서 출력이 세그멘테이션 오류가 될 것으로 예상합니다. 대신 출력이 일부 쓰레기 값입니다.다음 코드가 세그먼트 화 오류를 생성하지 않는 이유는 무엇입니까?
나중에 'b'를 1000으로 늘렸으므로 출력이 '분할 오류'입니다. 이런 종류의 행동에 대한 특별한 이유가 있습니까?
저는 gcc-4.3.2 컴파일러를 사용하고 있습니다.
정의되지 않은 동작입니다. 그것은 당신이 알고있는 모든 것에 대해 "하나"를 부르는 뉴욕 하수구 쥐들의 코러스 라인을 만들 수 있습니다. 자세한 내용은 [이 답변] (http://stackoverflow.com/questions/2397984/undefined-unspecified-and-implementation-defined-behavior/4105123#4105123) 또는이 포럼의 다른 많은 사람들을 참조하십시오. – WhozCraig
정의되지 않은 동작으로 인해 스피커에서 뜨거운 문제가 발생하면 창 밖으로 나갑니다. – chris
실제로 무슨 일이 일어나는지 컴파일러가 정확히 무엇인지 알고 있지만 너무 많이 당신을 사랑하게하는 당신의 어머니에게 분할 결함을 메일로 보내는 것입니다. – jthill