Грешката на сегментиране е
В UNIX-подобни операционни системи, процес, осъществяващ достъп до невалидна памет, получава SIGSEGV сигнала. В Microsoft Windows процес, който има достъп до невалидни области на паметта, хвърля STATUS_ACCESS_VIOLATION изключение и обикновено стартира Dr. Watson, който показва на потребителя прозорец с молба да изпрати доклад за грешка до Microsoft.
Ето пример за ANSI C код, който води до грешка в сегментирането на платформи, защитени с памет:
Компилирането и стартирането на такива програми на OpenBSD 4.0 води до следната грешка по време на изпълнение:
> За разлика от това, gcc 4.1.1 на Linux връща грешка по време на компилиране:
Условията, при които възникват нарушения на сегментирането и как се проявяват, зависят от операционната система.
Друг начин за причиняване на грешка в сегментирането е рекурсивното извикване на основната функция, което ще доведе до препълване на стека:
Обикновено грешка в сегментирането възниква, защото: указателят е или нулев, или сочи към произволно място в паметта (може би защото не е инициализирано), или сочи към изтрито място в паметта.
Сега дереферирането на който и да е от тези указатели може да причини грешка в сегментирането.
Също така, когато използвате масиви, ако случайно посочите текущия му размер вместо максималния размер на масива. Ето един пример:
такава грешка не се проследява от g++ при свързване, но ще причини грешка при сегментиране при стартиране на приложението.
- http://www.faqs.org/qa/qa-673.html
- http://c-faq.com/null/null1.html
- http://c-faq.com/null/varieties.html
Фондация Уикимедия. 2010 г.
Вижте какво е "Грешка на сегментиране" в други речници:
Segfault - Segmentation fault или накратко segfault) е софтуерна грешка, която възниква, когато се опитате да получите достъп до области на паметта, които не са за запис, или когато се опитате да промените паметта по забранен начин. В системи ... ... Wikipedia
Грешка на сегментиране — Грешка на сегментиране (или накратко segfault) е софтуерна грешка, която възниква, когато се опитате да получите достъп до области на паметта, които не са за запис, или когато се опитате да промените паметта по забранен начин. В системи ... ... Wikipedia
Защита на паметта - (англ. Memory protection) е начин за управление на правата за достъп до отделни области на паметта. Използва се от повечето многозадачни операционни системи. Основната цел на защитата на паметта е да предотврати достъп на процес до паметта, която ... ... Wikipedia
SIGSEGV - Описание: Изключение при достъп до памет По подразбиране: завършване с кодове за дъмп на паметта SA SIGINFO SEGV MAPERR Достъп до неизползвана страница SEGV ACCERR Нарушение на достъпа до страница В POSIX системи, SIGSEGV сигнал, ... ... Wikipedia
Процес (компютърни науки) - Този термин има други значения, вижте Процес. Състояния на процеси в съвременните операционни системи. Процесът на изпълнение на пасивни инструкции ... Wikipedia
Операционна система - Този термин има и други значения, вижте Операционна система (многозначност). Заявката "OS" се пренасочва тук; вижте и други значения. Операционна система, съкр. OS (английска операционна система, OS) комплекс от мениджъри и ... ... Wikipedia
Ядрото на операционната система - В тази статия липсват връзки към източници на информация. Информацията трябва да може да се провери, в противен случай може да бъде поставена под съмнение и премахната. Можете да ... Уикипедия
Микронуклеус - Този термин има и други значения, вижте Микронуклеус (цитология). Архитектурата на микроядрото се основава на сървърни програми в потребителски режим ... Wikipedia
Операционна система с микроядро — Архитектурата на микроядрото се основава на сървърни програми в потребителски режим. Микроядрото е минимална реализация на функциите на ядрото на операционната система. Класическите микроядра предоставят само много малък набор от примитиви на ниско ниво ... Уикипедия
Ядрото (на операционната система) - Този термин има други значения, вижте Ядрото. Ядрото е централната част на операционната система (ОС), която предоставя на приложенията координиран достъп до компютърни ресурси, като процесорно време, памет и външен хардуер ... ... Wikipedia