-
nicht lokalisierbarer Fehler im C-Programm
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?
Compiliert habe ich mittels
gcc -O2 -lm -Wall -pedantic -o kurs3 kurs3.c
-
Signal 11 = Segmentation Fault
http://www.tuxedo.org/~esr/jargon/ht...ion-fault.html
Darf man kurs3.c mal sehen?
-
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)
Warum das erst beim Verlassen der Funktion ein Signal 11 erzeugt, selbst wenn ich efence benutze, ist mir nicht klar
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen