สาเหตุหลักของความผิดพลาดในการแบ่งเซ็กเมนต์คือการเข้าถึงหน่วยความจำที่ไม่ได้เริ่มต้น อยู่นอกขอบเขตสำหรับโปรแกรมของคุณ หรือพยายามแก้ไขตัวอักษรสตริง สิ่งเหล่านี้อาจทำให้เกิดข้อผิดพลาดในการแบ่งส่วน แม้ว่าจะไม่รับประกันว่าจะทำให้เกิดข้อผิดพลาดในการแบ่งส่วน ต่อไปนี้คือสาเหตุทั่วไปบางประการสำหรับความผิดพลาดในการแบ่งส่วน -
- การเข้าถึงอาร์เรย์นอกขอบเขต
- ลดการอ้างอิงพอยน์เตอร์ NULL
- Dereferenceing หน่วยความจำว่าง
- ลดการอ้างอิงตัวชี้ที่ไม่ได้กำหนดค่าเริ่มต้น
- การใช้โอเปอเรเตอร์ "&" (ที่อยู่) และ "*" (ลดการอ้างอิง) ไม่ถูกต้อง
- ตัวระบุการจัดรูปแบบที่ไม่เหมาะสมในคำสั่ง printf และ scanf
- สแตกล้น
- การเขียนลงในหน่วยความจำแบบอ่านอย่างเดียว