Fang segfaults in C

Ich habe ein Programm, dass segfaults von Zeiger-Arithmetik manchmal. Ich weiß, das passiert, aber ich kann nicht einfach überprüfen, vor der Zeit, um zu sehen, ob es segfaults oder nicht - entweder kann ich die "pre-scan" input-Daten, um zu sehen, wenn es zu einem segfault (das kann unmöglich sein, zu bestimmen), oder kann ich refit, es nicht zu verwenden, Zeiger-Arithmetik, die verlangen einen deutlich größeren Umfang der Arbeit, oder ich kann versuchen, Sie zu fangen einen segfault. Also meine Frage:

1) Wie in C, kann ich fangen einen segfault? Ich weiß etwas in der OS-Ursachen ein segfault, aber was kann ein C-Programm tun, in dem Fall, dass es segfaults zu sterben ein bisschen mehr anmutig als nur Segmentation fault?

2) Wie Mobil ist das?

Ich denke, das ist eine höchst unportabel Verhalten, so dass, wenn Sie irgendeinen code zu fangen segfault, bitte sagen Sie mir, was Sie arbeitet. Ich bin auf Mac OS X, aber ich möchte mein Programm funktioniert auf so vielen Plattformen, wie es kann, und ich will sehen, was meine Optionen sind.

Und keine Sorge - im Grunde alles was ich will zu tun ist, drucken Sie eine benutzerfreundlichere Fehlermeldung und kostenlos einige malloc()ed-Speicher, und dann sterben. Ich bin nicht der Planung auf, einfach zu ignorieren, alle segfaults, die ich bekommen und Pflügen vor.

  • Drucken Sie die Fehlermeldung; nicht den Speicher frei, wie die Chancen sind gut, dass Ihr Gedächtnis-system ist gestört, wenn die seg Fehler passiert.
InformationsquelleAutor Chris Lutz | 2009-02-16
Schreibe einen Kommentar