รายการสาเหตุหลักของ Undefined Behavior ใน C++ (ระบุในมาตรฐาน) ควรหลีกเลี่ยงทุกประการ:
- Signed integer overflow
- Dereference NULL pointer, pointer จาก new ขนาด 0, pointer ไม่ได้ initialize, pointer เกินขอบเขต array
- ใช้ pointer ชี้ object ที่หมด scope หรือถูก delete แล้ว (dangling pointer)
- Pointer arithmetic ให้ผลลัพธ์อยู่นอกขอบเขต array
- แปลง pointer ระหว่างชนิดที่ incompatible
- อ่าน/เขียน object/array ด้วย offset ติดลบ
- เรียก pure virtual function จาก constructor/destructor
- ไม่ return ค่าใน value-returning function
ทั้งหมดนี้เป็น UB อย่างชัดเจนในมาตรฐาน ต้องหลีกเลี่ยงให้หมด