Что такое ошибка сегментации в Linux? - PullRequest
31 голосов
/ 08 июля 2010

В Linux:

Что такое ошибка сегментации?Я знаю, что происходит сбой программ, но это какая-то проблема утечки памяти или что-то совершенно не связанное?Кроме того, как вы справляетесь с этим?Это обычно проблема с настройкой компьютера или внутри самого приложения?

Кроме того, это также происходит в других ОС?

Ответы [ 2 ]

27 голосов
/ 08 июля 2010

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

«сегментация» - это концепция каждого процесса на вашем компьютере, имеющего свое собственное виртуальное адресное пространство. Таким образом, когда процесс A считывает ячейку памяти 0x877, он считывает информацию, находящуюся в отличном физическом расположении в ОЗУ, чем когда процесс B считывает свою собственную 0x877.

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

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

6 голосов
/ 08 июля 2010

«segfault» - это когда программа обращается к защищенной или недействительной памяти;обычно из-за плохого управления памятью или ошибочных манипуляций с указателями.

ОС обнаруживает недопустимый доступ к памяти и вылетает из приложения.

...