Описание тега segmentation-fault

Ошибки сегментации возникают при доступе к памяти, которая не принадлежит вашему процессу. Используйте этот тег вместе с тегом, указывающим язык, и тегом, указывающим операционную систему. Ошибки сегментации обычно являются результатом операции разыменования с переменными-указателями (чаще всего содержащими недопустимый адрес) или переполнением буфера. Основная причина недопустимого значения указателя может находиться далеко от места, вызывающего ошибку сегментации.

Ошибки сегментации возникают при доступе к памяти, которая не принадлежит вашему процессу. Они распространены и обычно являются результатом:

  • использование указателя на что-то, что было освобождено;
  • использование неинициализированного, следовательно, фиктивного указателя;
  • с использованием нулевого указателя;
  • переполнение буфера; или
  • попытка записи в постоянную память

Ошибка возникает не при манипулировании самой переменной-указателем (копирование или присвоение переменной-указатель), а при доступе к памяти, на которую указывает переменная (т. Е. При разыменовании переменной-указателя). Чтобы сгенерировать ошибку сегментации, linux-kernel доставляет сигнал 11 процессу, который сделал незаконный доступ к памяти. Действие по умолчанию при наличии ошибки сегментации - это coredump, создание файла coredump с базовой информацией о процессе.

Поскольку точка, в которой запускается ошибка сегментации, может находиться далеко от места, где среда и действия, которые создают условия для ошибки сегментации, поиск основной причины может быть трудным, особенно в сложном многопоточном приложении.

Ошибка сегментации - это описательная фраза из семейств операционных систем Unix и Linux, обозначающая общий класс поведения, при котором операционная система обнаруживает доступ к памяти процесса вне выделенной памяти процесса, в результате чего операционная система завершает процесс.

Такое поведение требует аппаратной поддержки защищенной памяти, которая может быть недоступна в некоторых микропроцессорах.

Дополнительную информацию можно найти на...

Если программа вылетела из-за

  1. несанкционированный доступ к памяти
  2. использование вне пределов памяти
  3. использование неинициализированной памяти

и он получил SIGSEGV и / или создается файл coredump, отметьте свои вопросы с помощью этого тега.