용어 사전 coding 용어 페이지

정의되지 않은 동작

C 규격이 결과를 약속하지 않아 환경마다 달라질 수 있는 실행 상태

undefined-behavior #c#language-rules#debugging

다른 이름

undefined behaviorUB

관련 개념

핵심 아이디어

정의되지 않은 동작은 C 언어 규격이 "이 상황에서 프로그램이 어떻게 동작해야 하는지"를 보장하지 않는 상태입니다. 프로그램이 멀쩡히 돌아갈 수도 있고, 이상한 값을 낼 수도 있고, 바로 종료될 수도 있습니다.

이 개념이 어려운 이유는 오류 메시지가 반드시 뜨지 않는다는 점입니다. 겉보기 결과가 정상처럼 보여도 이미 잘못된 코드일 수 있으므로, 실행 결과만 보고 안전성을 판단하면 안 됩니다.

이 블로그에서의 역할

Mathbong에서는 배열 범위 초과, 초기화되지 않은 값 사용, use-after-free, 더블 프리를 설명할 때 반복해서 등장합니다. C를 "컴파일만 되면 된다"가 아니라 규격 기반으로 읽게 만드는 핵심 용어입니다.

이 개념을 다루는 글