SIGSEGV
SIGSEGV — сигнал на POSIX-сумісних платформах, який посилається процесу при спробі адресування пам'яті, яка не належить процесу. Символьна змінна SIGSEGV оголошена у заголовному файлі signal.h
. Символьні імена для сигналів використовуються через те, що їхні номери залежать від конкретної платформи.
Опис | Помилка трансляції адреси (не може бути перехопленим або проігнорованим) |
---|---|
Дія за замовчуванням | Завершує процес |
SA_SIGINFO macros | |
None |
Етимологія
SIG є загальноприйнятий префіксом для назв сигналів. SEGV англ. segmentation violation — означає помилка сегментації.
Використання
В окремих системах сигнал SIGSEGV не посилається процесу, а використовується ядром системи для підкачки сторінок, в інших, в тому числі UNIX-системах призводить до завершення процесу. Одними з частих причин генерації такого сигналу є помилка в програмі, в результаті якої відбувається вихід за межі масиву або звернення до пам'ті через нульовий або неініціалізований покажчик.
Приклад
Програма мовою C, що намагається виконанти запис в комірку пам'яті з одресою 0:
int main()
{
*(int *)0 = 1;
return 0;
}
В UNIX-системах її виконання призводить до генерації сигналу SIGSEGV.