Ошибка сегментации возникает, когда программа пытается получить доступ к ячейке памяти, доступ к которой ей запрещён, или пытается получить доступ к ячейке памяти способом, который не разрешён. 1
Некоторые типичные причины ошибки сегментации:
- Попытка доступа к несуществующему адресу памяти (вне адресного пространства процесса). 1
- Попытка доступа к памяти, на которую программа не имеет прав (например, к структурам ядра в контексте процесса). 1
- Попытка записи в память, доступную только для чтения (например, сегмент кода). 1
- Ошибки программирования, которые приводят к недопустимому доступу к памяти: разыменование нулевого указателя, неинициализированного указателя, освобождённого указателя и другие. 1
- Переполнение буфера или стека. 14
- Попытка выполнить программу, которая неправильно компилируется. 1
- Использование несовместимых версий библиотек и ПО. 2
Условия, при которых происходят нарушения сегментации, и способы их проявления зависят от операционной системы. 5