Грешката на сегментиране е

В 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