C-Programm zu schnell

Hi

ich habe folgendes Problem und wollte fragen ob jemand die Ursache kennt:

Wenn ich mein c-Programm ausführe kriege ich einen Segmentation Fault. Wo genau der austritt konnte ich noch nicht herausfinden, denn:

Sobald ich etwas anders mache (z.B das Programm schrittweise mit GDB ausführe oder mir den Index ausgeben lasse läuft das Programm wie geschmiert). Kann das daran liegen, dass das Programm ohne Einflüsse „zu schnell“ durchläuft und es deswegen einen Speicherfehler gibt?

Danke im Vorraus,

Holgrich

Moien

Sobald ich etwas anders mache (z.B das Programm schrittweise
mit GDB ausführe oder mir den Index ausgeben lasse läuft das
Programm wie geschmiert).

Kann das daran liegen, dass das
Programm ohne Einflüsse „zu schnell“ durchläuft und es
deswegen einen Speicherfehler gibt?

Nein. Das Programm greift auf nicht allokierten Speicher zu. Wenn es solo läuft ist der Speicher ausserhalb seines Adressraums und das OS bekommt den Fehler mit => Ende von Programm.

Unter gdb liegt die falsche Adresse irgendwo im Bereich des gdb, also innerhalb des Adressraums des Prozesses. Durch gdb wird der Adressraum einfach nur grösser, deshalb merkt das OS nichts vom Fehler.

Lass es unter Valgrind laufen. Das bringt seinen eigenen Zugriffchecker mit.

cu

Wie erklärst du dir dann, dass wenn ich den Index ausgeben lasse (nicht in GDB, sondern das Programm solo) auch kein Fehler entsteht?

Moien

Wie erklärst du dir dann, dass wenn ich den Index ausgeben
lasse (nicht in GDB, sondern das Programm solo) auch kein
Fehler entsteht?

Du hast zusätzlich zum solo Programm Textbausteine ("%d" ?) im RAM. Der Zugriff kann auch diese treffen.

Wahrscheinlich läuft ein Index eine Stelle zu weit und trifft das erste Byte hinter einem Array.

cu