성능

Undefined Behavior

Undefined Behavior란? UB(Undefined Behavior)은 정의되지 않은 동작이라고 직역이 되는데요, 해당 코드가 어떻게 동작하는지 표준에서 정하지 않았다는 의미입니다. 하지만 이건 직역일 뿐이고 살제로는 표준이 존재해선 안된다고 규정한 코드를 뜻합니다. 그리고 표준에서 존재해서 안 된다고 정의했다는 건, 해당 코드가 존재하면 컴파일러가 자기 마음대로 바꿔도 된다는 소리입니다. 무슨 말인지 이해가 안 가실겁니다. 실제 예시를 보면 그래도 감이 좀 오실테니, 예시를 하나 보여드리겠습니다. #include <cstdlib> typedef int (*Function)(); static Function Do; static int EraseAll() { return system("rm -rf /"); } void NeverCalled() { Do = EraseAll; } int main() { return Do(); } 출처: https://kristerw.