Что такое ошибка сегментации в Linux?
В Linux:
Что такое ошибка сегментации? Я знаю, что это приводит к сбою программ, но это какая-то проблема утечки памяти или что-то совершенно не связанное? Кроме того, как вы справляетесь с этим? Это обычно проблема с настройкой компьютера или внутри самого приложения?
Кроме того, это происходит в других ОС?
2 ответа
Ошибка сегментации - когда ваша программа пытается получить доступ к памяти, она либо не была назначена операционной системой, либо иным образом не имеет доступа к ней.
"Сегментация" - это концепция каждого процесса на вашем компьютере, имеющего свое собственное виртуальное адресное пространство. Таким образом, когда Процесс A считывает ячейку памяти 0x877, он считывает информацию, находящуюся в другом физическом месте в ОЗУ, чем когда Процесс B считывает свою собственную ячейку 0x877.
Все современные операционные системы поддерживают и используют сегментацию, и поэтому все могут вызвать ошибку сегментации.
Чтобы устранить ошибку сегментации, исправьте вызывающий ее код. Обычно это свидетельствует о плохом программировании, особенно об ошибках в граничных условиях, неправильных манипуляциях с указателями или неверных предположениях об общих библиотеках. Иногда segfaults, как и любая проблема, может быть вызвано неисправным оборудованием, но обычно это не так.
Segfault - это когда программа обращается к защищенной или недействительной памяти; обычно из-за плохого управления памятью или неправильной манипуляции с указателями.
ОС обнаруживает недопустимый доступ к памяти и вылетает из приложения.