Съдържание:
- Определение - Какво означава Segmentation Fault (Segfault)?
- Techopedia обяснява грешката на сегментацията (Segfault)
Определение - Какво означава Segmentation Fault (Segfault)?
Грешка в сегментацията (segfault) е грешка, връщана от хардуер със защита на паметта, която казва на операционната система, че е настъпило нарушение на достъпа до паметта. Операционната система обикновено реагира, като съобщава на нарушаващия процес за грешката чрез сигнал и след това ОС извършва някакво коригиращо действие. Това се случва, защото процес или програма се опитват да получат достъп до памет, която не му е назначена.
Грешка в сегментацията е известна също като нарушение на достъпа.
Techopedia обяснява грешката на сегментацията (Segfault)
Грешката в сегментацията често е причинена от грешки в програмирането на процес или приложение, при което програмата се води до памет за достъп, която не е била разпределена за нея, а за други програми или за самата система. Не е позволен процес да докосва памет, която не е запазена за него, тъй като винаги трябва да изисква памет преди да я използва. Следователно, когато случайно докосне памет, която не му е присвоена, възниква нарушение на достъпа.
Segfaults също могат да бъдат причинени от рекурсивна функция, която може да използва цялото стеково пространство, което му е назначено, и бързо да посегне към паметта, която не му е присвоена. В някои системи това се счита за препълване на стека, но за други това е просто вид нарушение на достъпа.
Грешка в сегментацията може да бъде обработена от процес чрез персонализиран манипулатор на сигнали, но често се използва обработващият сигнал по подразбиране на ОС, който обикновено води до нарушаване на нарушения процес, наречен срив, или ОС принуждава ядрото на ядрото,