Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : nicht lokalisierbarer Fehler im C-Programm



nobody0
12-12-2002, 15:11
In einem C-Programm habe ich einen merkwürdigen Fehler: vor der letzten Anweisung (return) der ersten von main aufgerufenen Funktion wird noch die Zeilennummer mittels

printf ("l %d\n", __LINE__);

ausgegeben, aber unmittelbar danach wird dieselbe Anweisung in main (hinter dem Aufruf der betreffenden Funktion) nicht erreicht sondern das Programm terminiert mit Signal 11.
Wie kann es denn sein, dass ein return von einem Int-Wert (in dem Fall 208) und Beenden einer Funktion ein Signal 11 erzeugt? :confused:

Compiliert habe ich mittels
gcc -O2 -lm -Wall -pedantic -o kurs3 kurs3.c

tkortkamp
12-12-2002, 15:19
Signal 11 = Segmentation Fault

http://www.tuxedo.org/~esr/jargon/html/entry/segmentation-fault.html

Darf man kurs3.c mal sehen?

nobody0
12-12-2002, 16:46
Ich habe die Lösung: Zwei Strings, die ich als Felder definiert habe um die maximale Größe vorzugeben habe ich in einer Schleife falsch initialisiert:

for (j = 0; j < 128; i++)
{
line[i] = '\0'; // line
cline[i] = '\0'; // command line
}

Da musste der Index i nur durch j ersetzt werden (an den 3 Stellen) :rolleyes:

Warum das erst beim Verlassen der Funktion ein Signal 11 erzeugt, selbst wenn ich efence benutze, ist mir nicht klar :confused: