PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Segmentation Faults in C?


Aqualon
2005-05-29, 18:10:14
Hallo!

Ich haette mal eine Frage zu Segfaults in C. Wann treten diese genau auf und gibt es eine sichere Moeglichkeit diese zu reproduzieren?

Aqua

Demirug
2005-05-29, 18:22:40
Welches OS?

Ich vermute mal Linux oder ein anderes Unix.

Zu Segfaults kommt es dort wenn man versucht auf eine Speicheradresse zuzugreifen die in einem ungültigen Speicherbreich liegt.

Aqualon
2005-05-29, 19:24:17
Meinte *nix, hatte ich vergessen anzugeben.

Also treten Segfaults dann auf, wenn ein Programm auf einen Speicherbereich zugreifen will, den es nicht gibt oder auf den es nicht zugreifen darf, oder?

Aqua

Demirug
2005-05-29, 19:29:15
Richtig, ein typischer Zeigerfehler.

Legolas
2005-05-29, 22:44:31
Richtig, ein typischer Zeigerfehler.

Insbesondere, wenn man versucht den NULL-Pointer zu dereferenzieren.

Auf diese Weise kann man einen Segfault auch auf einfache Weise deterministisch erzeugen.

Gnafoo
2005-05-29, 23:42:05
Beispiel zum Nullpointer:

test.cc:

#include <iostream>

int main(void)
{
int *a = 0;
std::cout << *a << std::endl;
}


Ergebnis:

#> g++ test.cc -o test
#> ./test
segmentation fault ./test

Coda
2005-05-29, 23:57:31
Warum so umständlich?

int main() { int *pointer = 0; *pointer = 0; }

tut's genauso ;)