Trong C++, hành vi không xác định (UB) xảy ra khi vi phạm quy tắc ngôn ngữ. Dưới đây là các trường hợp UB thường gặp mà lập trình viên cần biết.
1. Chia cho 0
int x = 10, y = 0; int z = x / y; // UB: runtime error
2. Sử dụng biến chưa khởi tạo
bool x; if (x == true) cout << "true"; // giá trị rác, kết quả không xác định
3. Truy cập con trỏ NULL
int* ptr = nullptr; cout << *ptr; // UB: segmentation fault
4. Truy cập mảng ngoài phạm vi
int arr[10]; for (int i = 0; i <= 10; i++) cout << arr[i]; // UB: đọc/ghi bộ nhớ không hợp lệ
5. Tràn số nguyên có dấu (signed integer overflow)
int x = INT_MAX; cout << x + 1; // UB: có thể quay vòng thành INT_MIN
6. Sửa đổi chuỗi literal
char* str = "Hello World"; str[2] = 'x'; // UB: chuỗi literal là read-only
Lưu ý: UB không đảm báo báo lỗi compile-time; chương trình có thể chạy sai âm thầm, crash ngẫu nhiên hoặc hoạt động "may mắn" đúng trên một compiler nhưng sai trên compiler khác.