Что такое отказ сегментации на Linux?

В Linux:

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

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

31
задан Jonathan Leffler 1 June 2016 в 02:40
поделиться

2 ответа

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

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

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

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

27
ответ дан 27 November 2019 в 22:42
поделиться

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

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

6
ответ дан 27 November 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: