Gdy program jest kompilowany stała tekstowa „Hello World” umieszczana jest w sekcji rodata pliku wykonywalnego. Rodata jest częścią segmentu danych przeznaczoną tylko do odczytu. Do zmiennej „s” przypisywany jest wskaźnik na pierwszy znak tekstu „hello world”. Próba zmiany pierwszego znaku, na który wskazuje zmienna „s” kończy się wystąpieniem wyjątku. Uruchomienie programu na systemach Linux i Unix kończy się wyświetleniem poniższego komunikatu (lub podobnego zależnie od konfiguracji systemu):

$ gcc segfault.c -g -o segfault $ ./segfault Segmentation fault

Śledzenie wsteczne działania programu przy użyciu gdb zwróci:

Program received signal SIGSEGV, Segmentation fault. 0x1c0005c2 in main () at segfault.c:6 6 *s = 'H';

Powyższy błąd w kodzie może być naprawiony poprzez użycie tablicy w miejsce wskaźnika do znaku (char*). Spowoduje to za-alokowanie tablicy na stosie oraz przepisanie w ten obszar łańcucha znaków.

char s[] = "hello world"; s = 'H';