Search
Duplicate

Undefined behavior 란?

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
개발지식
C
Scrap
태그
undefined behavior
9 more properties

Undefined behavior란 ?

의도가 명확하지 않은 코드를 Undefined behavior라고 함
UB를 가진 코드를 컴파일 할 경우 의도와 전혀 다른 바이너리 파일을 생성할 수 있음
변수를 초기화 하지 않고 사용
잘못된 메모리 접근
자료형의 범위를 넘어가는 값을 넣음
잘못된 시퀀스 포인트
등등
→ 동작을 예측할 수 없는 코드

Undefined behavior의 결과

에러, 경고 메시지
오버플로우, 언더플로우
버스 에러
세그먼트 에러
등등

예제 - 초기화 되지 않은 변수

init_value
int init_value(bool is_fourtytwo) { int value; if (is_fourtytwo == true) value = 42; return value; }
C
복사
main function
int main() { printf("init : %d\\n", init_value(true)); printf("uninit : %d\\n", init_value(false)); }
C
복사
결과
init : 42 uninit : 49299200 is_fourtytwo가 true라면 value는 42로 초기화가 되어 정상적으로 42를 리턴하고, is_fourtytwo가 false라면 value는 초기화되지 않은 상태로 쓰레기 값을 리턴
Plain Text
복사
결과적으로 예측 불가능한 결과를 초래

문제점

1.
예측할 수 없음
2.
단순 버그로 그칠 수도 있으나 경우에 따라 모든 프로그램에 영향을 줄 수 있음
3.
아직은 문제가 생기지 않을 수 있음