Hành vi chưa định nghĩa (UB) là cách trao tự do cho người triển khai (biên dịch, OS) và máy tính làm "bất cứ gì họ muốn", tức là không quan tâm hậu quả.
Các trường hợp gây segmentation fault mang tính nhất thời. Chúng không luôn dẫn đến segfault mà có thể chạy đúng (hoặc ít nhất trông như đúng). Ví dụ:
#include <iostream>
int main() {
int arr[2];
arr[0] = 0;
arr[1] = 1;
arr[2] = 2; // Hành vi chưa định nghĩa
arr[3] = 3; // Hành vi chưa định nghĩa
}Mã này có thể chạy đúng hoặc gây segfault. Không thực sự được định nghĩa và phụ thuộc triển khai. Xem thêm về UB tại: https://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html