SIGSEGV

SIGSEGV
ОписПомилка трансляції адреси (не може бути перехопленим або проігнорованим)
Дія за замовчуваннямЗавершує процес
SA_SIGINFO macros
None


SIGSEGVсигнал на POSIX-сумісних платформах, який посилається процесу при спробі адресування пам'яті, яка не належить процесу. Макрос SIGSEGV оголошений у заголовному файлі <signal.h> як макрос-числова константа. Текстові імена для сигналів використовуються через те, що їхні номери залежать від конкретної платформи.

Етимологія

SIG є загальноприйнятим префіксом для назв сигналів. SEGV англ. segmentation violation — означає помилка сегментації.

Використання

У сучасних ОС із віртуальною пам’яттю (зокрема у UNIX‑подібних) при спробі доступу до невідведеної або захищеної сторінки ядро системи генерує SIGSEGV і надсилає його процесу, що зазвичай призводить до його аварійного завершення. Одними з найпоширеніших причин SIGSEGV є:

  • Вихід за межі масиву;
  • Звернення до нульового вказівника;
  • Доступ до раніше виділеної, але неініціалізованої пам'яті;
  • Спроба запису в пам'ять, призначену тільки для читання;

Приклад

Програма мовою C, що намагається виконати запис в комірку пам'яті з адресою 0:

int main()
{
  *(int *)0 = 1;
  return 0;
}

В UNIX-системах її виконання призводить до генерації сигналу SIGSEGV.

Див. також

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya