Tutorial by Topics: 정의되지



C에서는 일부 표현식에서 정의되지 않은 동작이 발생 합니다. 표준은 컴파일러가 그러한 표현식을 만났을 때 어떻게 행동해야 하는지를 명시 적으로 정의하지 않도록 명시 적으로 선택합니다. 결과적으로 컴파일러는 적합하다고 생각되는 것을 자유롭게 수행 할 수 있으며 유용한 결과, 예상치 못한 결과 또는 충돌을 일으킬 수 있습니다.

UB를 호출하는 코드는 특정 컴파일러가있는 특정 시스템에서 의도 한대로 작동하지만 다른 시스템이나 다른 컴파일러, 컴파일러 버전 또는 컴파일러 설정으로는 작동하지 않을 수 있습니다.

정의되지 않은 동작 (UB)이란 무엇입니까? ISO C ++ 표준 (§1.3.24, N4296)에 따르면이 표준이 요구 사항을 부과하지 않는 동작입니다.

즉, 프로그램에서 UB를 만날 때 원하는대로 할 수 있습니다. 이것은 종종 충돌을 의미하지만, 단순히 아무것도하지 않거나, 귀신이 코 에서 빠지게 하거나, 제대로 작동하는 것처럼 보일 수도 있습니다!

말할 필요도없이 UB를 호출하는 코드를 작성하지 않아야합니다.

C ++가 어떻게 잘못 될 수 있는지에 대한 더 많은 예제.

정의되지 않은 동작 에서 계속


Page 1 of 1