Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Segmentation Fault là gì trong C/C++?

Segmentation fault (segfault) xảy ra khi chương trình cố truy cập vùng nhớ mà hệ điều hành không cấp cho nó. Nói cách khác: truy cập vượt khỏi giới hạn bộ nhớ được phân bổ cho tiến trình.

Nguyên nhân chính do con trỏ:

  • Con trỏ chưa khởi tạo đúng cách (chứa rác).
  • Con trỏ trỏ đến bộ nhớ đã được giải phóng/realloc (dangling pointer).
  • Con trỏ dùng trong mảng với chỉ số vượt giới hạn (out-of-bounds).

Khi segfault xảy ra, OS gửi tín hiệu SIGSEGV (Signal 11) và kết thúc tiến trình. Trên Linux, có thể sinh file core dump để debug.