Я пытаюсь понять, когда возникает какая-либо ошибка сегментации.Я написал небольшую программу, которая пишет по неверному случайному адресу.
Я не вижу ошибки сегментации с этой программой -
int main (void)
{
int c = 6;
*(&c + 1000) = 5;
printf ("0x%llx - %d\n", (unsigned long)&c, c);
return 0;
}
, которая выводит:
$ gcc segmentationFault.c
$ ./a.out
0x7ffc2f709b5c - 6
$
Но я получаю ошибку сегмента с кодом ниже -
int main (void)
{
int c = 6;
*(&c + 3000) = 5;
printf ("0x%llx - %d\n", (unsigned long)&c, c);
return 0;
}
, который производит:
$ gcc segmentationFault.c
$ ./a.out
Segmentation fault (core dumped)
$
Любое объяснение, пожалуйста?