Speicherzugriffsfehler bei fprintf(stderr...

28/01/2008 - 19:35 von Sascha Hüdepohl | Report spam
Hallo!

Ich schreibe mir grade ein Programm, das auch eine Konfigurationsdatei
lesen soll. Bestimmt gibts dafür fertige Bibliotheken, aber ich möchts
gerne mal zu Fuß machen.

Vorweg muß ich zugeben, das dies so ziemlich das Erste Mal ist, dass
ich ernsthaft versuche etwas in C umzusetzen. Sonst mache ich viel in
Bash, Perl, Python... Bin aber nicht völlig ungelernt was C/C++ oder
auch Turbo Pascal angeht. Also wenn ich da etwas richtig dàmliches
mache, dann reibts mir ruhig unter die Nase.

Ich habe das ganze Progràmmchen unter
http://sascha.huedepohl.de/munin-node/
abgelegt.

Der Punkt, an dem es bei mir aussetzt ist in Zeilen 113,114,115:

trim(line);
puts(line);
fprintf(stderr, "hier %s", line);

line ist ein char[]
trim() habe ich geschrieben. Soll Whitespace und Kommentare entfernen.

Ich teste das Programm mit:
./munin-node config < test

puts(line) wird noch ausgeführt.
fprintf gibt einen Speicherzugriffsfehler.

Also wie gesagt, ich bin nicht in der Lage einen Fehler zu finden.
Mein Compiler ist:
gcc (GCC) 4.2.3 20080114 (prerelease) (Debian 4.2.2-7)

Mit einem:
gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
gibt es keinen Speicherzugriffsfehler.

Wàhre Toll, wenn mir da jemand auf die Sprünge helfen könnte.

Gruß
Sascha
 

Lesen sie die antworten

#1 Claus Reibenstein
28/01/2008 - 19:57 | Warnen spam
Sascha Hüdepohl schrieb:

Ich habe das ganze Progràmmchen unter
http://sascha.huedepohl.de/munin-node/
abgelegt.



30: if (not s) {

Das ist kein gültiges C.

34: char *p = index(s, '#');

Wo und wie ist index() definiert?

45: if ((len >= 0) and isspace(s[--len])) {
46: s[len] = '\0';
47: } else {

Wenn der String nur aus Whitespace besteht, erreicht len in Zeile 45
irgendwann den Wert -1. Somit setzt Du in diesem Fall in Zeile 46 s[-1]
auf 0 und hast damit undefiniertes Verhalten.

Der Punkt, an dem es bei mir aussetzt ist in Zeilen 113,114,115:



Das könnte ein Folgefehler davon sein.

Gruß. Claus

Ähnliche fragen