2017-10-24 2 views
-1

mein Programm ist ein "Taschenrechner" (+, -, *, /,%) auf große Zahlen und ich verwende Arrays, um es zu tun. Es geht alles gut, außer für genaue Zahlen bei der Division. Beispiel: Mit "235904955217602177779531391566404600024660137230836722833991048650026087431751987982144871621272505722819200445400/291608731024614095661614", gibt es die gute Antwort, aber Absturz direkt danach. Ich habe ein SIGSEGV Fehler debuggen und erhalten. Aber es passiert direkt am Ende des Programms. Ich habe keine Ahnung, woher dieser Fehler kommt.SIGSEGV Fehler am rechten Ende des Programms Code :: Blöcke

Here is the debug error.

[debug]Program received signal SIGSEGV, Segmentation fault. 

Here is the full program.

#include <stdio.h> 
... 

Antwort

0

Segmentation fault das heißt SIGSEGV beim Beenden des Programms geschieht in der Regel, wenn Sie korrupte Speicher, beispielsweise im Falle eines Pufferüberlaufs. Mit anderen Worten, es entspricht nicht immer dem Moment der Korruption, sondern kann viel später erscheinen. Versuchen Sie also zuerst, alle Kompilierungswarnungen zu aktivieren und zu beheben, fügen Sie die Argumente der Eingabeargumente hinzu, bestätigen Sie vor dem Zugriff auf die Puffer, wenn der Index innerhalb der Grenzen liegt, dann ist es ratsam, einen statischen Codeanalysator zu verwenden, z. Fussel. Dies dient der Sicherstellung der Codequalität.

Eine andere Option, wenn Sie es immer mit bestimmten Eingängen fangen - versucht, das Stück Code zu isolieren, der schuld ist: durch verschiedene Eingaben und/oder durch Kürzungsfunktionen im Code könnten Sie es schließlich finden. Aber dies ist kein systemischer Ansatz, es könnte andere Fehlerszenarien geben.

Verwandte Themen